爲多個用戶執行cron-job自動化的最佳方式是什麼?Cron作業 - PHP腳本 - 多個用戶?
例:
一個cron作業需要每10分鐘運行調用(通過捲曲)連接到外部API並收集數據(網站訪問者和其他數據)一個PHP腳本用戶已收到外部網絡媒體資源。我們需要每隔10分鐘通過API定期檢查一次,如果該用戶有任何新的數據可用並獲取它 - 並且在網絡應用程序中爲每個用戶提供。
這樣的cron作業PHP腳本調用API通常需要1-3秒每用戶,但也有時可能需要長達30秒或更長時間才能完成一個用戶(在特殊情況下)。
問題 ...
什麼是執行這一程序,收集外部數據一樣,爲多個用戶的最佳方法是什麼? 數百甚至數千用戶?
對於每個用戶,我們需要每10分鐘檢查一次數據。
本來我打電話連續10個用戶在一個時鐘守護作業調用一個循環的思維,但由於每個用戶採集可需要30秒...... 10個用戶環路可能需要幾分鐘,並......該腳本可能會超時?正確?
您是否對如何最有效地爲許多用戶執行此過程有一些提示和建議?應該爲每個用戶使用單獨的cron作業嗎?而不是循環?
謝謝!
===編輯===
比方說,一個PHP腳本可以調用API 1分鐘內10個用戶...我可以創造10個時鐘守護作業,基本上同時調用同一個PHP腳本,但每個人收集一批不同的10個用戶?這樣我可以在一分鐘內爲100個用戶獲取數據?沒有?
它看起來是這樣的:??
在/ usr/local/bin目錄/ PHP -q get_data.php users_group = 1
在/ usr/local/bin目錄/ PHP -q get_data.php users_group = 2
在/ usr/local/bin目錄/ PHP -q get_data.php?users_group = 3
等等...
難道這是否可行呢?
===註釋===
每個用戶都有與外部API服務的唯一訪問密鑰,所以一個API調用只能是一次一個用戶。但是API可以同時接收多個同時呼叫不同的用戶。
由cli(包括cron)調用的腳本沒有時間限制。也就是說,對於數千用戶,每10分鐘30秒顯然不會工作 –
假設我有10個獨立的cron作業幾乎同時調用同一個php腳本......這是否會起作用?事情是,每個用戶每次API調用大多數時間需要1-3秒。只有極少數情況下可能需要10秒鐘(我經歷過的最多時間),而我只需30秒就可以確保...如果API提供商的服務器被卡住或者如此... ... – user1033406
便宜的多線程 - 我做這但將進程數量限制爲內核數量。之後,他們所做的一切都提示並且你沒有任何好處 –