方法1:
使用fastcgi_finish_request():
示例:
$data = [
"code" => 0,
"msg" => ""
];
header("'Content-type:text/json'");
echo json_encode($data,JSON_UNESCAPED_UNICODE);
fastcgi_finish_request();//至此,响应已经返回给客户端,但程序还可以继续执行
......//N多操作,并不会占用接口响应时间
echo "hello";//此处不会再返回给客户端
方法2:
使用shell非阻塞方式执行php脚本:
示例:
$data = [
"code" => 0,
"msg" => ""
];
shell_exec("/use/local/php/bin/php /www/t.php > /dev/null 2>&1 &");//此脚本可以执行N多操作,不会占用接口响应时间
header("'Content-type:text/json'");
exit(json_encode($data,JSON_UNESCAPED_UNICODE));
需要注意的是shell脚本后面的参数" > /dev/null 2>&1 &",没有这些参数,执行shell也是会阻塞的,这些参数的作用是将命令输出的内容写入系统的一个回收站文件,这样程序就不会阻塞。此写法并不是唯一的。
网友评论