我有一个文件将通过 CRON 调用 30 到 30 分钟,但想要一些改进它的技巧,因为他的方式非常慢。
他的逻辑很简单:
搜索数据库中所有状态未就绪的记录
如果记录存在,它会执行一次 foreach,并且对于此类的每个实例,它都会调用另一个类来执行 curl 以获取 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']}");
}
}
}
所有答案都很有用。我认为问题出在数据库中,我的查询也没有优化。我会试试你说的......