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