首页 存档 技术 查看内容

【12-09】PHP中如何做异步处理,有啥好用的工具推荐吗?

2018-3-30 13:00 |来自: 互联网 313 0

摘要: 【今日话题】 PHP中如何做异步处理,有啥好用的工具推荐吗? - eric huang 1. laravel的异步队列感觉就做的非常优雅! - 马 2. swoole - viktor 3. 队列服务 Rabit Beanstalk Redis - 安正超 4. Laravel的队列有三种 ...

【今日话题】

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命令,被调用的方法忽略超时

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部