如何在队列中运行PHP脚本?

3
在我的当前任务中,当我选择大量的记录并改变它们的状态或重新分配它们时,系统可能会变得缓慢,以至于用户必须等待一段时间才能完成此操作。
所以,有没有办法将此过程排队,使其在后台运行,以便用户可以执行其他任务?
提前感谢您。

请参考 http://php.net/manual/en/function.curl-multi-exec.php。 - Learner
5个回答

2

0
使用 j-query 的 ajax 方法,让用户等待而不进行任何操作。

0

你可以选择以下方式:

  • Gearman

  • Beanstalkd

  • RabbitMQ

    基本上你可以运行任何消息队列系统,然后使用 STOMP(一种标准协议)在进程之间进行通信。


在 PHP 中使用 stomp(包括'ack')存在很多问题,如果需要编写(不只是读取),那么使用 AMQP 协议会更容易。至少可以使用 RabbitMQ。 - pomaxa

0

是的,当然可以。如果您想让 PHP 脚本在后台继续工作,并让用户与您的站点进行交互,您需要做的就是发送头信息:

header("Connection: close");
header("Content-length: $size");

这是你要找的吗?


0

需要更多关于队列如何处理的信息,您的意思是正在处理的数据与第一个进程运行后运行的第二个进程无关吗?如果是这样,我会按照您的脚本运行

yourcommand > /dev/null 2>&1 &

这将使进程在后台运行。

在PHP的上下文中,如果您追求的是速度,我会检查PHP是否有足够的可用内存。如果是,我会将值保存在数组中,并使用foreach循环来操作数据。通常这样做会更快。

需要更多信息。

Hari


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接