2017-11-17 23 views
1

私は単一のドメインチェックで何を探しているのですか?しかし、私は確認したいURLのリストを持っています。 カールを使用して配列を作成する方法はありますか?curlと一連のURLを一緒に使用する方法

$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; 
+0

あなたは 'cURL_mutli_ *'関数は、ここで説明のためにlookigている:http://us.php.net/manual/en/ref.curl.php - 私はあなた自身でそれを試してみることをお勧めします。あなたが失敗した場合、ちょうどここに戻って来てください。私たちはここに手伝っています:)しかし、注意してください:あなたが何個から何バイトをリクエストしたいのか分かりません。それらが多すぎると、ジョブが並行して実行されるため、大きなパフォーマンス上の問題に遭遇する可能性があります。 – Twinfriends

+0

[Guzzle](http://docs.guzzlephp.org/en/stable/)のようなライブラリを使うこともできます。これは、ネイティブ 'curl_ *'関数よりも高いレベルの抽象化を提供します。複数の依頼を並行して – iainn

+0

お送りいただきありがとうございます。彼らは私がする必要があることをよりよく理解するために大きな助けとなりました。ありがとう! – Jane

答えて

0

あなたが望むすべてが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); 

これは、URLの応答からヘッダデータを取得するためにget_headers()を使用しています。

編集:または、実際に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); 
関連する問題