这是我正在做的事情的简要概述,实际上非常简单:
- 出去从数据库表中获取记录。
- 遍历所有这些记录,并为包含 URL 的每一列输出(使用 cURL)并确保 URL 仍然有效。
- 对于每条记录,都会使用当前时间戳更新一列,该时间戳指示上次检查的时间以及发生其他一些数据库处理的时间。
无论如何,这一切都很好,很好,并且完全符合它的预期。问题是我认为就我如何使用 cURL 验证 URL 而言,性能可以大大提高。
这是我的代码的简短(过于简化)摘录,演示了如何使用 cURL:
$ch = curl_init();
while($dbo = pg_fetch_object($dbres))
{
// for each iteration set url to db record url
curl_setopt($ch, CURLOPT_URL, $dbo->url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch); // perform a cURL session
$ihttp_code = intval(curl_getinfo($ch, CURLINFO_HTTP_CODE));
// do checks on $ihttp_code and update db
}
// do other stuff here
curl_close($ch);
正如您所看到的,我一直在重复使用相同的 cURL 句柄,但即使我去掉所有处理(数据库或其他),脚本仍然需要非常长的时间才能运行。更改任何 cURL 选项是否有助于提高性能?调整超时值/等?任何输入将不胜感激。
谢谢,
- 尼古拉斯