2012-10-15 45 views
2

在我當前的任務中,當我選擇大量記錄,然後更改其狀態或重新分配它們時,系統可能會慢到這一點,因此用戶必須等待一段時間才能完成此操作。如何在隊列中運行PHP腳本?

那麼有什麼辦法可以將這個進程放入隊列中,這樣進程就可以在後臺運行,用戶可以執行其他任務。

謝謝你在先進。

+0

參考http://php.net/manual/en/function.curl-multi-exec.php – Learner

回答

0

使用j-query ajax方法,並讓用戶等待而不做任何動作。

0

您可以選擇從

  • Gearman
  • Beanstalkd
  • RabbitMQ

    基本上你可以運行任何的MessageQ系統,然後使用STOMP(A標準協議)的進程之間進行交談。

+0

蹬在PHP中有很多的麻煩(與 'ACK'),如果你需要編寫(不只讀),那麼使用AMQP協議將會更容易。至少用rabbit-mq – pomaxa

0

是的,當然。如果你想保持php腳本在後臺工作,並讓用戶玩你的網站。所有你需要做的,是發送標題:

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

這是你在找什麼?

0

需要關於隊列處理方式的更多信息,這意味着正在處理的數據與第一個進程之後運行的第二個進程無關嗎?在這種情況下,我會運行腳本

yourcommand > /dev/null 2>&1 & 

這將讓在後臺進程運行。

在PHP的上下文中,如果速度超過後,我會檢查PHP是否有足夠的可用內存。如果是的話,我會將值保存在一個數組中,並使用foreach循環來處理數據。通常這會更快。

需要更多信息。

哈日