【今日话题】 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命令,被调用的方法忽略超时 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|