php有什么简单方法可以延后处理任务的

2013-02-27 13:56:01 +08:00
 xing393939
比如ajax请求一个php
需要返回success和curl一个接口(后续任务)
但是curl很耗时,弄的ajax请求时间很长
能不能先返回success了,再继续处理curl,简单点的不损耗性能的
4543 次点击
所在节点    PHP
14 条回复
nigelvon
2013-02-27 14:03:47 +08:00
用fputs请求需要后续处理的php 脚本,同时返回success。这样是不需要等待脚本完成的。
lyxint
2013-02-27 14:07:12 +08:00
gearman
twm
2013-02-27 14:08:11 +08:00
queue
jerry
2013-02-27 14:20:10 +08:00
fpm 的 fastcgi_finish_request
xing393939
2013-02-27 15:07:50 +08:00
@jerry 这个好是好,可惜只能是fpm模式
HowardMei
2013-02-27 15:13:42 +08:00
这个简单不了吧, Reactphp /t/59502
fkccp
2013-02-27 16:54:15 +08:00
ajax请求两个地址,一个success,一个做后续
Cadina
2013-02-27 17:02:51 +08:00
异步队列,一般的云计算服务都有
AlloVince
2013-02-27 17:10:18 +08:00
laputa7
2013-02-27 17:27:44 +08:00
可以设置CURLOPT_TIMEOUT_MS,但是对curl与php的版本有要求,或者队列。
yayanet
2013-02-27 18:51:25 +08:00
简单处理可以这样
exec("php script.php p1 p2 p3 > /tmp/result.out &")
qq286735628
2013-02-27 19:02:48 +08:00
PHP自带有flush模块
http://www.php.net/manual/zh/book.outcontrol.php

把php脚本的生命周期延长,然后利用flush()来分段输出
Asimov
2013-02-27 19:04:17 +08:00
把要处理的任务列表写入数据库。然后用crontab来定时执行要处理的东西。这是不用学习新的东西最简单有效果的方法。
justplaymore
2013-04-28 17:57:51 +08:00
一种是队列,另一种是用输出控制,ob_flush,队列的性能更好,因为是异步的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/61463

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX