Справочники, инструменты, документация

PHP: Cниппет для получения кода ответа сервера

Получение кода ответа сервера на примере небольшого php скрипта, который получает список адресов из xml файла (sitemap.xml).
$sIn = 'in.xml';

$sCRLF = "\n";
//$sCRLF = "<br/>";

$oXml = simplexml_load_file($sIn);

$aRet = [];
$i = 0;
$iTotal = count($oXml);
foreach($oXml as $oURL) {
 $sURL = $oURL->loc[0];

 $headers = @get_headers($sURL);
 $code = (empty($headers[0]))?'0':substr($headers[0], 9, 3);
 $aRet[] = [
 'code' => $code,
 'URL' => $sURL,
 ];

 $i++;
 echo $i.' / '.$iTotal.$sCRLF;

// if ($i > 3) {
// break;
// }
}

file_put_contents('out.json', json_encode($aRet));

Доработанный скрипт, берет входящий массив (json) и записывает каждый ответ новой строчкой в файл. Это позволяет избежать проблем с переполнением памяти, а также с падениями.

 $aLinks = json_decode(file_get_contents('links.json'));
 $sResultFileName = 'result.txt';
 $i = 0;
 $iTotal = count($aLinks);
 foreach($aLinks as $sURL){
 $headers = @get_headers($sURL);
 $code = (empty($headers[0]))?'0':substr($headers[0], 9, 3);

 file_put_contents($sResultFileName, $sURL.' :: '.$code . PHP_EOL, FILE_APPEND);

 $i++;
 echo "$i / $iTotal: $sURL \n";
 }