簡體   English   中英

我如何加快我的cron作業/數據庫更新

[英]how can I speed up my cron job / database update

我有一個cron作業,每小時運行一次,用來自API的每小時數據更新本地數據庫。

數據庫按行存儲每小時數據,API返回24個數據點,代表過去24小時。

有時會丟失一個數據點,所以當我取回數據時,我只能更新最近的時間-我還需要檢查以前是否有此數據,並填補發現空白的任何空白。

一切都在運行,但每次cron作業至少需要30分鍾才能完成,我想知道是否有任何方法可以使此運行更好/更快/更有效?

我的代碼執行以下操作:(為簡潔起見,摘要代碼!)

// loop through the 24 data points returned
for($i=0; $i<24; $i+=1) {

// check if the data is for today, because the past 24 hours data will include data from yesterday
if ($thisDate == $todaysDate) {

// check if data for this id and this time already exists
$query1 = "SELECT reference FROM mydatabase WHERE ((id='$id') AND (hour='$thisTime'))";

// if it doesnt exist, insert it
if ($datafound==0) {
$query2 = "INSERT INTO mydatabase (id,hour,data_01) VALUES ('$id','$thisTime','$thisData')";
}

}
}

並且有1500個不同的ID,因此可以執行1500次!

有什么辦法可以加快或優化此代碼,使其運行得更快,更有效?

這似乎不太復雜,應該在幾秒鍾內運行。 因此,我不知道您的數據庫的第一個猜測就是您缺少數據庫的索引。 因此,請檢查您的id字段上是否有索引。 如果您的id字段不是唯一鍵,則應考慮在2個字段idhour上添加另一個索引。 如果還沒有這些,那將節省大量時間。

另一個想法是在單個sql查詢中檢索過去24小時內的所有數據,將值存儲在數組中,然后檢查是否僅在數組中讀取了該數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM