【今日话题】
PHP中如何做异步处理,有啥好用的工具推荐吗? - eric huang
1. laravel的异步队列感觉就做的非常优雅! - 马
2. swoole - viktor
3. 队列服务 Rabit Beanstalk Redis - 安正超
4. Laravel的队列有三种, 一种是直接运行,用于开发环境, 一种是用redis, 一种是用beantalk
应该是首推beanstalk,毕竟是专门做队列,其次是redis
上次要写个队列,就拿laravel去参考了,功能实现确实很赞
有两种运行模式, 一种是常驻内存, 直到内存超出指定配置, 自动退出
一种是每次来一个任务,开一个新的php进程处理, 处理完退出
要实现常驻,要靠外部来监控了, 用supervisor, 退出时自动重启, 或者简单点写个crontab去判断也行
比较大的缺点是, 模块设计比较重, 队列功能依赖很多, 不能单独安装, 要装整个laravel全家桶才行跑起来, 不是用laravel的application的, 要折腾了
其他特色功能**错误任务最大次数, 超出次数记录到数据库, 延迟运行, 防止任务丢失等
我自己再加上最大运行时间功能, 就可以避免mysql,redis连接超时了, 不用处理重连问题
其他的异步方法有 通过exec执行curl, 通过fsockopen打开网页等
有一个我比较想尝试的, 是先写入到文件, 每个任务一行, 外部跑crontab或tail之类的命令, 读取文件内容, 再解析了执行, 性能应该很好, 依赖又非常少 - twin
5. 发信息给py
py通过gevent处理
gevent很简洁 - 种树人
6. 用upstart或者systemd做自动重启 - 刘科彬
7. https://github.com/coooold/swPromise 基于swoole,php的promise框架 - Jason Bourne
8. 问: Php实现异步为了干什么用呢,根部不适合做异步吧 - 这个人很开心
回: 不是适合不适合做异步,而是Web服务有时需要异步处理来提升用户体验。 - 李三
9. 要异步,web 命令行就可以吧 进度依赖数据库或文件
web产生任务,命令行扫描任务队列,web查询状态和结果 - 张金帅
10. 利用gearman做PHP异步 - 杨毓丞
11. 最近刚做,php写任务队列,python处理队列任务
Swoole也考虑过,但是放弃了 - tiyee
12. 通过exec调用系统的screen,创建一个自动退出的“terminal”,其中执行curl命令,被调用的方法忽略超时
Tag标签: