簡體   English   中英

如何同時使用curl和URL數組

[英]How to use curl and an array of URLs together

我發現此代碼可以完成我在單個域檢查中正在尋找的代碼。 但是,我有一個要檢查的URL列表。 您能否以及如何創建帶有curl的數組?

$url = 'http://www.example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, true);    // we want headers
curl_setopt($ch, CURLOPT_NOBODY, true);    // we don't need body
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT,10);
$output = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

echo 'HTTP code: ' . $httpcode;

如果您只需要headers ,請嘗試使用curl代替:

$urls = array('http://www.example.com','http://www.example.com2','http://www.example.com3','http://www.example4.com');

$httpCodes = [];
foreach($urls as $url)
{
    $httpCodes[$url] = get_headers($url)[0];
}

var_dump($httpCodes);

這使用get_headers()從URL的響應中獲取標頭數據。

編輯:或者,如果您真的想使用curl 您可以將以下代碼與curl_multi使用:

$urls = array('http://www.example.com','http://www.example.com2','http://www.example.com3','http://www.example4.com');

$curlMultiReq = curl_multi_init();
$ch = [];
foreach($urls as $key => $url)
{
    $ch[$key] = curl_init($url);
    curl_setopt($ch[$key], CURLOPT_HEADER, true);    // we want headers
    curl_setopt($ch[$key], CURLOPT_NOBODY, true);    // we don't need body
    curl_setopt($ch[$key], CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch[$key], CURLOPT_TIMEOUT,10);
    curl_multi_add_handle($curlMultiReq, $ch[$key]);
}
$running = '';


do {
  curl_multi_exec($curlMultiReq, $running);
  curl_multi_select($curlMultiReq);
} while ($running > 0);


foreach(array_keys($ch) as $key){
  echo curl_getinfo($ch[$key], CURLINFO_HTTP_CODE);
  echo "\n";  
  curl_multi_remove_handle($curlMultiReq, $ch[$key]);
}
curl_multi_close($curlMultiReq);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM