![]() | 1 mogita 2024-03-21 18:06:10 +08:00 |
2 dobelee 2024-03-21 18:06:29 +08:00 很多年没写 php 了,不清楚现在有没有出新特性。此前异步一般用 swoole 。一定不用 swoole 的话只能转到 mq 。 |
![]() | 3 zlhsvc 2024-03-21 18:07:25 +08:00 丢 redis 队列啊,这两个都有这功能 |
4 yc8332 2024-03-21 18:10:50 +08:00 ![]() 除非你访问量特别大,不然完全不需要走队列。如果比较耗时那就放请求后的 fastcgi_finish_request 执行就好了 |
![]() | 5 mohuani 2024-03-21 18:11:24 +08:00 也可以扔到 mq 里面,发送邮件的时候,消费 mq 里面的消息 |
6 shinelamla 2024-03-21 18:13:01 +08:00 workerman ? |
![]() | 7 SethShi 2024-03-21 18:21:00 +08:00 我只能告诉你没那么简单, 用上了异步, 你的业务写代码的方式也要跟着变的. 已经不是正常的 PHP 你应该遇到业务解决业务的方法, 而不是从技术框架入手. 楼上说了很多: 发邮件 -> 异步队列, 想省事 fastcgi_finish_request (你要用异步的话, 中途重启了怎么办, 失败了怎么处理) 点赞 直接 redis, 然后定时任务同步就好了 |
8 akiyamamio 2024-03-21 18:23:13 +08:00 webman 吧 |
![]() | 9 abigeater 2024-03-21 18:32:41 +08:00 laravel 有内置? 实现大概就是写入任务在 redis 然后配合守护进程消费? https://learnku.com/docs/laravel/10.x/queues/14873#0796f7 |
![]() | 10 meshell 2024-03-21 19:23:45 +08:00 https://www.php.net/manual/en/function.fsockopen.php 封装下就行了,只要不 read 就可以。 |
11 jonsmith 2024-03-21 19:46:29 +08:00 via Android 消息队列,最稳。 |
12 ymlluo 2024-03-21 21:59:59 +08:00 laravel queue |
![]() | 13 IdJoel 2024-03-21 22:04:58 +08:00 amphp swoole workman |
14 happy32199 2024-03-21 22:23:37 +08:00 via iPhone 试试 amphp php 原生协程和配套库 |
![]() | 15 vovov 2024-03-21 22:25:12 +08:00 via iPhone 你这个需求,我一般用 laravel 的队列开发最快 |
![]() | 16 yekern 2024-03-21 22:37:26 +08:00 Laravel 根据你的需求根本就不需要队列实现, 有一个事件系统,使用观察者模式就够用了. |
18 mrpzx001 2024-03-22 09:42:08 +08:00 hyperf |
19 keller 2024-03-22 09:51:23 +08:00 用 Laravel 队列吧 |
20 star7th 2024-03-22 11:41:42 +08:00 Laravel 自带的队列就能解决你的发邮件问题 |
![]() | 21 putyy 2024-03-22 13:51:52 +08:00 Laravel ThinkPHP 都可以实现,也有对应的队列相关包,或者自己写个命令行 ```php while(true){ // todo redis 出队消费 sleep(5); } ``` |
22 cxdLand 2024-03-22 16:36:05 +08:00 Yii-queue 开箱就用 |
24 changz 2024-03-23 00:31:26 +08:00 via Android swoole debug 起来是个灾难 |
25 coderzhangsan 2024-03-23 09:23:03 +08:00 楼上给出很多建议,帮你总结下: 1. 使用支持异步的框架或包 a. 基于 swoole 扩展的框架 b. 基于 workman 的框架 c. 支持异步的 composer 包, 例如 guzzle/amphp/reactphp 2. sapi 为 fpm 时, 可以用 fastcgi_finish_request 另类实现,封装一个异步观察者模式库,将阻塞业务放置在 fastcgi_finish_request 函数后执行。 |
![]() | 26 abccccabc OP 多谢 25L ,我已经在看 reactphp ,毕竟一个 composer 就可以,不需要太多配置。 |
27 GarethChu 2024-03-23 11:29:54 +08:00 ThinkPHP 不是有个事件监听可以实现你需要的功能 |
29 langziyang 2024-04-02 11:25:16 +08:00 看一看 symfony 的 https://symfony.com/doc/current/messenger.html |
![]() | 30 Yanlongli 2024-04-11 14:38:10 +08:00 yii 我用的 yii-queue 任务队列,算是伪异步。 |
![]() | 31 lyxxxh2 2024-04-18 11:17:16 +08:00 没有。 *** 要知道 php 生态都是 fpm 的。 socket 的框架,用 fpm 的生态,自己品下。 最好是直接换语言。 也不是不能用,就是他不"专业",某些情况,需要你填额外的坑。 *** 注册后发邮件: 耗时且不需要等待,队列完事。 浏览量+1: 难道这操作有 500ms+? 不然就把代码复杂化。 |