2020 年了,现在最简单的 PHP 执行异步任务的方式是什么,不要框架,尽量十几二十行 PHP 代码能搞定?

2020-06-12 15:50:05 +08:00
 frozenway

想在这台服务器(国内)php 保存某些数据后,去更新另外一台服务器(国外)的文件缓存,如果是同步更新,保存数据的响应结果会太慢太卡,想着异步去做。要求尽量简单,不想左一个框架右一个框架,不用 redis,memkache 等,因为开启这些扩展需要编译 php,麻烦

7329 次点击
所在节点    PHP
44 条回复
caola
2020-06-12 17:58:04 +08:00
swoole,编译只是一条命令而已 🐶
falcon05
2020-06-12 18:01:20 +08:00
beanstalkd 简单粗暴
Tokin
2020-06-12 18:53:55 +08:00
记得当时弄的一个简单的队列,后来改用 node 了。
dadmin
2020-06-12 19:47:45 +08:00
国外服务器更新缓存功能写成接口 (需要设置 set_time_out(0); ignore_user_abort(true);)
国内服务器通过 curl 请求国外更新缓存接口 并设置执行超时时间
xing393939
2020-06-12 20:39:42 +08:00
kaneg
2020-06-12 21:51:51 +08:00
crontab 就是干这个活的
LevineChen
2020-06-13 01:19:18 +08:00
fastcgi_finish_request 正解啊 应该是最简单方式了一行代码搞定.
edk24
2020-06-13 09:34:11 +08:00
RabbitMQ, 最近刚用上这个队列功能处理视频转码.
http://aili.edk24.com/1754293

也许可以试一下, 消费者和生产者连接同一个服务, 生产者投递任务即时响应返回, 消费者在另一个服务器收到任务对它进行处理


同步文件可以用 scp 之类的命令. 个人不精的建议. 也就 docker 运行个 Rabbitmq, 其他还真是几行代码
edk24
2020-06-13 09:35:25 +08:00
或者 swoole 有异步任务
PHPJit
2020-06-13 09:57:56 +08:00
fastcgi_finish_request
raysonlu
2020-06-13 10:06:02 +08:00
“开启这些扩展需要编译 php,麻烦” 。。。???
yincrow
2020-06-13 10:28:29 +08:00
swoole 的 worker 可以满足
jay4497
2020-06-13 10:42:48 +08:00
曾经用 curl 做过类似的,就是发 curl 请求,设置不需要返回结果,然后再设个一秒的超时时间,效果就是程序到这会停一秒,然后就继续执行了,不会等待那边处理完成返回结果。。。
pandait
2020-06-13 11:04:29 +08:00
用鸟哥的那个 blog 的 fsockopen
realpg
2020-06-13 13:23:37 +08:00
@frozenway #5 PHP 海量数据下 删除数据、生成数据防卡死的标准操作 自刷新也可以
ViggoSite
2020-06-13 13:39:12 +08:00
系统定时任务 或者 workman,简单又方便
encro
2020-06-13 13:52:14 +08:00
dnf or apt install php-redist 还好吧
workerman swoole Gearman 也还好吧
phpize 也麻烦?
blurh11E27
2020-06-13 15:35:05 +08:00
redis 发布订阅
go522000
2020-06-13 15:51:43 +08:00
以前用过 fsockopen 做异步请求,挺好用,你可以搜索相关文章参考一下。
yincrow
2020-06-13 16:11:10 +08:00
@yincrow 我看了下 swoole 的文档,coroutine 和 process

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/681005

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX