我有一個mysql數據庫表充滿了1000 +記錄,可以說5000個記錄。每條記錄都有一個processed
布爾標誌,默認爲false (0)
。我想要做的是每分鐘都在cron上運行一個PHP腳本。它的代碼是這樣的:可以使用Cron作業來使用PHP來模擬多線程嗎?
<?php
process();
function process()
{
$sql = "SELECT id FROM items WHERE processed = '0' ORDER BY id ASC LIMIT 1";
$result = $this->db->query($sql);
if (! $result->has_rows())
die;
$id = $result->getSingle('id');
processItem($id); //Will set processed to 1 after processing is done
process();
}
?>
它應該很清楚上面的代碼做什麼,它得到的是未經處理的下一個記錄的ID,處理它,然後再調用process()
功能重複這個過程,直到沒有更多的項目需要處理,此時執行會停止。
通過把這個腳本放在Cron上每分鐘運行一次,我希望這個腳本有多個實例可以同時處理這些物品,所以不需要一次處理一件物品,可以獲得5-10個物品同時處理。
1)這會按照我計劃的方式工作嗎?任何改進建議/要注意的事項?
2)如果我有腳本設置爲運行的實例數的計數器,所以每當一個cron作業啓動,它會檢查計數器,如果50(?)情況下運行,將退出而不處理。這可能會讓服務器因使用過多內存而導致運行進程太多而崩潰。有什麼想法嗎?
事實上,它看起來像上面的代碼沒有做任何事情做的'限制0' –
哎呀,固定的:) –