PHP后台执行任务(可能是队列)

吃益达的人 发布于 2016/12/19 11:10
阅读 947
收藏 0
PHP

如题 

需求是 当用户在前台点了按钮之后 后台起一个脚本 异步执行某段程序 (整个程序大概需要执行五分钟)

我看好像队列只能是排队进行   我的需求是 来一个就执行一个 跟前面的没影响

比如 来了一个任务 进队列并执行了,执行中的时候第二个任务也来了 这时候两个任务应该是同时进行而不是排队的状态


简单点理解 就是每个用户都有自己的队列  如何实现动态创建队列呢?

请问如何实现

加载中
0
喜欢自在
喜欢自在
这种场景不适合PHP,多线程并发的首选用C,其次JAVA
洞悉
洞悉
和语言没有关系
0
朱__朱
朱__朱

// 任务状态检查

shell_exec('/bin/usr/php aa.php &>/dev/null &'); // 执行任务

// 修改任务状态



朱__朱
朱__朱
回复 @吃益达的人 : 所以前后给你加了两行注释就是让你处理这件事
吃益达的人
吃益达的人
因为每个进程都是执行5分钟 每次都exec 如果第一个没执行完 进行第二个会不会冲突 如果同时进行了几十个甚至上百个 会不会有问题
0
大賢者
大賢者
php页面接受请求,exec执行外部程序即可。把超时关闭
吃益达的人
吃益达的人
因为每个进程都是执行5分钟 每次都exec 如果第一个没执行完 进行第二个会不会冲突 如果同时进行了几十个甚至上百个 会不会有问题
0
mirai_
mirai_

PHP处理

请求放入队列,然后crontab每秒去从队列取出数据交给PHP脚本处理,这个相当于多进程处理,数据量不大没问题。。。

也可以设置一个缓存,记录开了多少进程,防止开的进程过多。。。

你想PHP开线程或进程都不现实


0
xinson
xinson
用swoole写成多线程
吃益达的人
吃益达的人
好像有点复杂了 队列也可以
0
kakai
kakai
五分钟的业务耗时,太繁重。你就没想过优化业务?如果是后台数据导出之类的处理,那此业务面向的用户群比较小,按正常流程处理应该也是可以的
吃益达的人
吃益达的人
请求外部接口 限制6s一次 所以需要sleep
0
开拖拉机上学
开拖拉机上学
用消息队列啊;
吃益达的人
吃益达的人
需求是要 动态创建队列 这个如何做到
0
洞悉
洞悉

1. 不知道什么程序需要程序运行5分钟。

2. 前后的任务如果没有关系,这就是一个简单的异步任务。

3. 至于说同时几百 几千 几万的任务,如果不急就慢慢跑。如果需要及时反馈 就多开进程多开机器。

吃益达的人
吃益达的人
请求外部接口 限制6s一次 所以sleep 需求说白了就是要 动态创建队列
返回顶部
顶部