繁体   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