php本身是没有异步的,但我们经常会需要处理一些耗时操作,如微信公号推送给所有用户。试过很多方法都没有做到,每一条推送一个网络请求,curl每次好像最少一秒,请求次数多肯定不行。fscokopen post json数据没解决,一直出现post data empty,请各路高手支招,给一些解决方法!
高洛峰2017-04-10 16:02:23
耗时操作就不用放在web上了,你可以用php写脚本把耗时操作放进去,然后web上面通过执行脚本并忽略输出达到异步效果,这是我使用的方法,如果你看到有更好的回答,记得 @ 我看一下哈哈哈。下面是示例代码:
pclose(popen('/usr/local/php5/bin/php tmp.php &', 'r'));
// 继续你的代码
阿神2017-04-10 16:02:23
把耗时的任务存储到数据库,然后专门写一个PHP CLI进程循环处理数据库里的任务.
这些耗时的任务不应该在Web上(MOD_PHP,PHP-FPM)执行,以免影响Web服务.