0
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']}");
}
}
}
모든 대답은 유용했다. 나는 문제가 데이터베이스에 있다고 생각하고 나의 쿼리는 최적화되지 않았다. 나는 당신이 말한 것을 시도 할 것입니다 ....
프로파일 링을 수행하고 대부분의 시간을 보내고 있는지보십시오. 나는 그것이 "컬 (curl)"이라고 생각하거나 단순히 "결과 (resultados)"를 단순히 매우 큰 배열로 생각한다. – xbonez
병목 현상을 테스트하는 간단한 방법은 스크립트의 각 부분이 실행 된 후 타임 스탬프를 기록하는 것입니다. 이렇게하면 "문제"가 데이터베이스 또는 컬 부분을 쿼리하는 데 있는지 확인할 수 있습니다. – Tivie