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

时间:2012-10-15 10:35:23

标签: php jquery

在我当前的任务中,当我选择大量记录然后更改其状态或重新分配它们时,系统可能会减慢到那一点,因此用户必须等待一段时间才能完成此操作。

那么有没有办法将此进程放入队列,以便进程在后台运行,用户可以执行其他任务。

先谢谢你。

5 个答案:

答案 0 :(得分:2)

是的......看看Gearman:

http://gearman.org/index.php?id=getting_started

http://php.net/manual/en/book.gearman.php

Alternativley,如果你不喜欢它,我已经多次使用这个优秀的4部分教程的原则,效果很好:

http://squirrelshaterobots.com/programming/php/building-a-queue-server-in-php-part-1-understanding-the-project/

答案 1 :(得分:0)

使用 j-query ajax方法,让用户无需执行任何操作即可等待。

答案 2 :(得分:0)

您可以选择

  • Gearman
  • Beanstalkd
  • RabbitMQ

    基本上,您可以运行任何MessageQ系统,然后使用STOMP(标准协议)在进程之间进行通信。

答案 3 :(得分:0)

是的,当然。如果你想保持php脚本在后台工作,让用户玩你的网站。您需要做的就是发送标题:

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

这是你在找什么?

答案 4 :(得分:0)

需要有关如何处理队列的更多信息,您是说正在处理的数据与第一个进程后运行的第二个进程无关?在这种情况下,我会将您的脚本作为

运行
yourcommand > /dev/null 2>&1 &

这会让进程在后台运行。

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

需要更多信息。