CRONを介して30〜30分間呼び出されるファイルがありますが、彼のやり方が非常に遅いため、それを改善するためのヒントが必要です。
彼の論理は単純です:
ステータスが準備できていないすべてのレコードをデータベースで検索します
レコードが存在する場合は、foreachを実行し、このクラスのインスタンスごとに別のクラスを呼び出してカールを実行し、xmlを取得してmd5ハッシュに変換し、ハッシュを現在のデータベースと比較します。
ハッシュが異なる場合は、他のことを行います
問題は、誰かがこれを改善できるのであれば、このプロセスは非常に遅いということです。
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . 'setup.php');
$MySQL = new MySQL();
$resultados = $MySQL->query("SELECT * FROM objetos WHERE situacao != 'entregue' AND email = 1")->fetchAll(PDO::FETCH_ASSOC);
if ($resultados) {
foreach ($resultados as $resultado) {
$Rastreio = new Correios(new cURL(), $resultado['cod_objeto']);
if ($Rastreio->resultado['hash'] != $resultado['hash']) {
$user = $MySQL->query("SELECT nome, email FROM usuarios WHERE id_usuario = {$resultado['fk_id_usuario']}")->fetch(PDO::FETCH_LAZY);
// Doing something different
$MySQL->exec("UPDATE objetos SET situacao = $Rastreio->resultado['status'], hash = {$Rastreio->$resultado['hash']} WHERE cod_objeto = {$resultado['cod_objeto']} AND fk_id_usuario = {$resultado['fk_id_usuario']}");
}
}
}
すべての答えは役に立ちました。問題はデータベースにあると思います。私のクエリも最適化されていません。私はあなたが言ったことを試してみます...。