0
如果我在瀏覽器中運行,此代碼有效。當我通過cron運行腳本時,它不能通過數組並停止一半?爲什麼是這樣?mysql在foreach循環中插入,cron不能正常工作
$url_array = array("eur-gbp","eur-aud","usd-chf","eur-usd","eur-jpy","gbp-jpy","eur-cad","eur-chf","usd-cad","usd-jpy","cad-chf","cad-jpy","gbp-usd","aud-usd","gbp-chf","chf-jpy","gbp-cad","aud-cad","aud-chf","aud-jpy","aud-nzd","eur-nzd","gbp-aud","gbp-nzd","nzd-chf","nzd-usd","nzd-cad","nzd-jpy");
$option_array = array(1,2,3,4,5,6,7);
$type_array = array(1,2,3,4,5,6);
foreach($url_array as $url_type) {
//code
foreach($option_array as $option) {
//code
foreach($duration_array as $duration) {
//code
foreach($type_array as $type) {
//mysql insert
$sql = "SELECT * FROM `data_analysis` WHERE date_time='".$date."' AND type='".$url_type."' LIMIT 1";
$query = $this->db->query($sql);
$result = $query->fetch_assoc();
if($result){
$sql = "UPDATE `data_analysis` SET value='".$percentage."', price_change='".$price."', parent='1' WHERE date_time='".$date."' AND type='".$url_type."'";
} else {
$sql = "INSERT IGNORE INTO `data_analysis` (date_time,value,price_change,type,parent) VALUES ('".$date."','".$percentage."','".$price."','".$url_type."','1')";
}
}
}
}
}
這不是確切的代碼,因爲它太長,但發佈但類似。代碼在瀏覽器中完美工作?通過cron運行它停在gbp-jpy
?爲什麼是這樣?
有一個MySQL查詢限制?
您的腳本是否會偶爾運行一段時間?你如何通過cron調用php?您可能需要調整php-cli的php.ini中的'max_execution_time'和/或'memory_limit'值,您的web服務器上可能會有不同的設置。 – chrki
我通過cPanel調用腳本。我的max_execution_time是2小時,內存限制是無限的(-1),我已經在php.ini中設置。劇本將需要大約15分鐘。 – mdnba50
而不是使用'SELECT'後跟'INSERT'或'UPDATE',使用'INSERT ... ON DUPLICATE KEY UPDATE'。 – Barmar