美文网首页
PHP非阻塞执行程序的两种方法

PHP非阻塞执行程序的两种方法

作者: 向南路人 | 来源:发表于2020-03-23 16:21 被阅读0次

    方法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也是会阻塞的,这些参数的作用是将命令输出的内容写入系统的一个回收站文件,这样程序就不会阻塞。此写法并不是唯一的。

    相关文章

      网友评论

          本文标题:PHP非阻塞执行程序的两种方法

          本文链接:https://www.haomeiwen.com/subject/vymwyhtx.html