PHP 怎样异步处理

我写了个sleep10秒 但是一触发其他脚步地方都跟着延迟 请问怎么样不堵塞的情况下正常执行?

阅读 6.9k
8 个回答
如果你用nginx,可以利用fastcgi处理

主要用两个方法:

//这里写同步代码

fastcgi_finish_request();
set_time_limit(0);

//这里写异步代码

PHP本身是不支持异步,但你可以用协程去实现!

如果你这个异步处理不是立马要处理结果,你可以把要异步处理或者比较耗时的处理抽出来,单独放在一个action里。再在代码里面curl里面请求这个链接,超时时间设为1s(php curl最短只能设置为1s),设置不获取结果。。。

PHP本身不支持异步,可以借助 Redis 队列或专业的队列服务,把耗时的操作放入队列中异步执行。

新手上路,请多包涵

建议使用队列实现,主流的PHP框架(thinkphp,laravel等)基本都集成了队列功能或拥有成熟的队列插件,稳定且易于使用。不用自己去从0开发。

可以采用pthread扩展

可以采用swoole一些扩展来实现

队列或PHP扩展 thread 类来实现

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题