,我不得不做一些像「cron作業」,因爲我沒有訪問的cPanel呼叫cron的兩倍或三倍有時
我這個cron作業類的邏輯是,當有人打從網站上的東西,驗證時間並致電課程。
...所以....
這裏是我班的cronjob,並我的問題是,有時它會調用類的兩倍或三倍 ..(也許從兩個或多個當前時間用戶是相同的... ...)
<?php
class cronJob extends Core {
public function execute() {
include("interfaces/cronJob.php");
$items = $this->query("SELECT `id`, `class`, `interval`, `time` FROM `cron_job`");
while($item = $this->fetch($items))
{
if($this->getTime() > $item['time']) {
$this->query("UPDATE `cron_job` SET `time` = '".($this->getTime() + $item['interval'])."' WHERE `id` = '".$item['id']."'");
$this->getLog("cronJob: ".$this->getTime()." Class: ".$item['class']);
include_once("cron/".$item['class'].".php");
$job = new $item['class'];
$job->run();
}
}
}
}
?>
......然後......這裏是時間的函數(我不認爲這是必要的:P)
public function getTime() {
return time() + 305;
}
日誌:
2013-04-14 12:59:02 - cronJob: 1365890342 Class: updateFiles
2013-04-14 12:59:37 - cronJob: 1365890377 Class: updateTrivia
2013-04-14 01:00:13 - cronJob: 1365890413 Class: updateTrivia
2013-04-14 01:00:49 - cronJob: 1365890449 Class: updateTrivia
2013-04-14 01:01:25 - cronJob: 1365890485 Class: updateTrivia
2013-04-14 01:02:01 - cronJob: 1365890521 Class: updateTrivia
2013-04-14 01:02:37 - cronJob: 1365890557 Class: updateTrivia
2013-04-14 01:03:13 - cronJob: 1365890593 Class: updateTrivia
2013-04-14 01:03:49 - cronJob: 1365890629 Class: updateTrivia
2013-04-14 01:04:25 - cronJob: 1365890665 Class: updateTrivia
2013-04-14 **01:05:01** - cronJob: 1365890701 Class: updateTrivia
2013-04-14 **01:05:01** - cronJob: 1365890701 Class: updateTrivia
表:
所以......沒有任何人有任何想法解決它?
爲什麼要讀取所有cron作業?您可以限制只讀取應該運行的作業,例如'SELECT ... WHERE time> $ this-> getTime()'。 –
@MarcB我必須提取所有這些數據,然後驗證「if($ this-> getTime()> $ item ['time'])」 –
是這樣嗎?爲什麼數據庫無法做到這一點? $ item ['time']來自數據庫,因此只需在您的選擇查詢中發送$ this-> getTime(),並節省您不必執行的所有作業。例如你開車去商店買東西,然後扔掉你想要的糖果吧裏的一切。 –