2017-04-11 39 views
2

我一直在尋找兩個數據庫之間匹配的項目,但是當cronjob運行時,我會得到一個503錯誤。503通過兩個數據庫之間的匹配

可變來源是像'彼得'或'瑪戈'這樣的名字。 而name_key是數組的關鍵字,如'name'或'event'。

global $dbh; 
global $dbh_second; 

$import_sql = $dbh->prepare('SELECT name_key FROM imports WHERE name = :source'); 
$import_sql->bindParam(':source', $source, PDO::PARAM_STR); 
$import_sql->execute(); 
$name = $import_sql->fetch(PDO::FETCH_ASSOC); 

$source = strtolower($source); 
$import_data_sql = $dbh->prepare('SELECT * FROM import_data WHERE source = :source AND import_key = :key'); 
$import_data_sql->bindParam(':key', $name['name_key'], PDO::PARAM_STR); 
$import_data_sql->bindParam(':source', $source, PDO::PARAM_STR); 
$import_data_sql->execute(); 
$import_data = $import_data_sql->fetchAll(PDO::FETCH_ASSOC); 


foreach ($import_data as $filter) { 

    $column = $filter['import_key']; 
    $party_sql = $dbh_second->prepare("SELECT * FROM `digi_gz_parties` WHERE name LIKE :value"); 
    $party_sql->bindParam(':value', $filter['import_value'], PDO::PARAM_STR); 
    $party_sql->execute(); 

    if($party = $party_sql->fetch(PDO::FETCH_ASSOC)) { 

     $import_check_sql = $dbh->prepare('UPDATE import_data SET status = 1 WHERE source = :source AND import_value LIKE :value AND created_at = :max'); 
     $import_check_sql->bindParam(':max', $filter['max_data'], PDO::PARAM_STR); 
     $import_check_sql->bindParam(':value', $filter['import_value'], PDO::PARAM_STR); 
     $import_check_sql->bindParam(':source', $source, PDO::PARAM_STR); 
     $import_check_sql->execute(); 

    } 

} 

是他們的另一種解決方案,或者我需要設置超時秒數更高?

非常感謝!

+0

什麼是您的Web服務器(Apache?)錯誤日誌中的錯誤消息? – Jocelyn

+0

503秒超時。 –

+0

超時。你應該增加執行時間set_time_limit(0); –

回答

1

您需要批量獲取記錄,因爲否則它需要太長時間並且會超時。並看看一些優化:索引,緩存等。

+0

服務在線。系統需要檢查的記錄是9000,如果我用1000做它,它將正確地做到沒有503錯誤,但是超過1000的所有數據都會給出503錯誤。 –

相關問題