503通过两个数据库之间的匹配

时间:2017-04-11 09:11:53

标签: php pdo cron

我一直在研究一个搜索两个数据库之间匹配的项目,但是当cronjob运行时我会得到503错误。

变量来源就像' Peter'或者' Margot'。 并且name_key是数组的关键,例如' name'或者'事件'。

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();

    }

}

他们的另一个解决方案是这样做还是我需要设置超时秒数更高?

非常感谢!

1 个答案:

答案 0 :(得分:1)

您需要批量获取记录,否则会花费太长时间并超时。并看看一些优化:索引,缓存等。

相关问题