[php]长时间执行PHP,返回结果到前端&后台继续执行

本文探讨如何在PHP中处理长时间运行的任务,并在任务启动后返回结果到前端,同时允许后台继续执行任务。主要涉及的技术点包括异步处理、后台任务调度以及与前端的通信机制。
	//1、返回数据到前端
    $rs = ['code' => 0, 'msg' => 'ok', 'data' => true];
    set_time_limit(0);
    ob_end_clean();
    header("Connection: close");
    header("HTTP/1.1 200 OK");
    header("Content-Type: application/json;charset=utf-8");// 如果前端要的是json则添加,默认是返回的html/text
    ob_start();
    echo json_encode($rs);// 输出结果到前端
    $size = ob_get_length();
    header("Content-Length: $size");
    ob_end_flush();
    flush();
    if (function_exists("fastcgi_finish_request")) { // yii或yaf默认不会立即输出,加上此句即可(前提是用的fpm)
        fastcgi_finish_request(); // 响应完成, 立即返回到前端,关闭连接
    }
    
	//2、继续后台执行
    ignore_user_abort(true);
    set_time_limit(60);
    $interval = 5;
    $stop = 1;
    do {
        if($stop == 10 ) break;
        file_put_contents('phpzixue.txt',' Current Time: '.time().' Stop: '.$stop.PHP_EOL,FILE_APPEND);
        $stop++;
        sleep( $interval );
    } while(true);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值