我想知道如何實現一些php服務器後臺功能來處理每秒鐘的一些評估(獨立於用戶查看頁面)。php服務器後臺進程
我現在的解決方案是使用每秒運行的cron作業完成的。我想知道是否有其他選擇或可能性。而不是使用的cron
在此先感謝
我想知道如何實現一些php服務器後臺功能來處理每秒鐘的一些評估(獨立於用戶查看頁面)。php服務器後臺進程
我現在的解決方案是使用每秒運行的cron作業完成的。我想知道是否有其他選擇或可能性。而不是使用的cron
在此先感謝
,我建議你寫一個守護進程,可以用PHP,Python和Node.js的或者您喜歡的語言做到這一點。一旦你寫好了你的腳本,你可以使用upstar
將其轉換成一個守護進程。1)用一個while循環寫入你的程序並進入睡眠狀態。
while (1)
{
if (x == y) {
echo "yay!"
}
sleep(1);
}
2)用一個包裝器編寫程序,所以它永遠不會崩潰。
while test 1
do
php /usr/local/bin/continual_process.php
done
這種方法的問題在於它一直使用CPU週期。如果您將程序編寫爲node.js應用程序,則事件驅動架構和功能可幫助您擴展應用程序(並讓您考慮解決問題的不同思路)。
此外,您必須考慮處理循環需要多長時間。如果你每秒鐘都在調用這個程序,但是它需要2秒鐘才能循環,你正在吃掉你的程序! sleep
方法可能不值得。如果循環需要2秒,並且您的登錄號碼爲sleep 1
,則每3秒運行一次該過程。
最後,如果你的過程是快速和輕的(1秒循環),考慮使用setInterval
。
setTimeout在JavaScript引擎中是在c或php中不太可能比睡眠(1)使用更少的CPU週期。 – Evert 2013-04-09 15:14:58
setTimeout的語義與Web瀏覽器中的大致相同:超時參數是執行前等待的最小數量的ms,而不是保證。該命令僅在每個輪詢週期(在節點中)被檢查並因此**非阻塞**而在C和PHP中則爲** BLOCKING **。 – jnovack 2013-04-09 15:27:05
當然,這正是關鍵。阻塞並不意味着它阻塞了CPU,這意味着這個過程告訴內核:我在x時間內沒有做任何事情,之後再給我CPU時間。由於NodeJS實際上可以在睡眠時在後臺執行某些操作,因此相比於CPU使用率肯定爲0的C/PHP,CPU消耗很可能不爲0. – Evert 2013-04-09 15:53:44
cronjob是正確的。 – phpisuber01 2013-04-09 14:34:55
雖然每一秒都顯得過度,但每一分鐘都會更實際 - 沒有意識到cron實際上會跑到每一秒 – 2013-04-09 14:38:04
它必須每秒進行一次評估,因爲它需要在預定時間執行計劃操作 – 2013-04-09 14:42:51