マルチスレッドを使用すると、複数の読み込みを同時に実行できるため、できるだけ速く URL を呼び出すことができます。PHP は実際にはマルチスレッドを適切にサポートしていませんが、マルチプロセッシングを実行させることはできます。これにより、URL リクエストを開始すると、ページが読み込まれるのを待つことなく、すぐに次のリクエストを開始できます。
次のコードは、wget を使用してこれを実現する方法の例です。これは高速ですが、成功または失敗について通知しないという欠点があります。
<?php
foreach($pages as $page){
exec('/usr/bin/wget '.$page.' > /dev/null 2>&1 &');
}
?>
これをさらに一歩進めて、wget の代わりに独自の php スクリプトを呼び出すことができます。その場合、プログラムはロードに失敗した URL をログに記録できます。
したがって、完全な例は次のようになります。
run.php
<?php
foreach($pages as $page){
exec('loadPage.php '.$page.' > /dev/null 2>&1 &');
}
?>
loadPage.php
<?php
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
$response = curl_exec($argv[1]);
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpdCode != '200'){
$fp = fopen('error.log', 'w');
fwrite($fp, 'The URL '.$url.' had an issue. It returned a '.$httpCode.' error.');
fclose($fp);
}
?>