Bir web sitesinin HTTP durumunu olabildiğince hızlı kontrol eden bir PHP betiği yapmaya çalışıyorum.get_headers'den daha hızlı bir şey()
Şu anda get_headers() yöntemini kullanıyorum ve bunu mysql veritabanından 200 rastgele bir URL'de çalıştırıyorum.
Tüm 200'ü kontrol etmek için - ortalama 2m 48s alır.
Bunu daha hızlı yapmak için yapabileceğim bir şey var mı (çok)?
(Ben fsockopen hakkında biliyorum - 20s 200 sitede 200 bağlantı noktasını kontrol edebilirsiniz - ancak sunucu bağlantı noktasında yanıt verebileceğinden, http durum kodu istemekle aynı değildir, ancak web siteleri doğru şekilde yüklenmiyor olabilir) İşte
<?php
function get_httpcode($url) {
$headers = get_headers($url, 0);
// Return http status code
return substr($headers[0], 9, 3);
}
###
## Grab task and execute it
###
// Loop through task
while($data = mysql_fetch_assoc($sql)):
$result = get_httpcode('http://'.$data['url']);
echo $data['url'].' = '.$result.'<br/>';
endwhile;
?>
Merhaba, cURL kullanmayı da denedim - gönderdiğiniz koddaki gibi. Ama aynı, infiltre get_headers(); – Clarkey
Yukarıdaki bağlantıyı verdiğim için çok istekte bulunmayı deneyin. Örneğin, zaman başına 10 istek – safarov
+1 Güzel biri! Curl uzantısının paralel olarak istekleri işleyebileceğini bilmiyordum. – nnichols