php异步执行的几种方法, 非阻塞运行(详细介绍和总整理)

  - 1.提前结束会话(请求), 但是进程仍在执行后续耗时代码
    - FastCGI模式下, 使用fastcgi_finish_request()函数能马上结束会话
    
      - 注意: fastcgi_finish_request官方介绍页面下的评论提出需要注意的点[链接](https://www.php.net/manual/zh/function.fastcgi-finish-request.php)
        正常脚本结束时php会自动调用session_write_close()函数, 而脚本在处理中的时候占用者session锁,对于后续请求来说是阻塞的.所以要尽快手动调用session_write_close()结束并保存session数据. 这对于其他有竞争锁情况同样适用,没有用了要尽快释放
        
    - 一般模式下(如Apache, Nginx, FastCGI(直接使用fastcgi_finish_request()更方便等), 提前输出内容, 结束会话
      
      <?php
      //适用于大多数运行模式(不包括命令行模式)
      set_time_limit(0);  //设置不限执行时间
      ignore_user_abort(true);  //忽略客户端中断
      //nginx等可能需要达到4k才会输出buffer,所有先输出一些空字符串
      $str = str_repeat(' ', 65536);
      $str .= '立即输出' . date('Y-m-d H:i:s');
      #header('X-Accel-Buffering: no');   // 关闭加速缓冲, 在nginx模式需要开启此行
      header("Content-Type: text/html;charset=utf-8");
      header("Connection: close");//告诉浏览器不需要保持长连接
      header('Content-Length: '. s
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值