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

04.08.2022

Получение кода ответа сервера на примере небольшого 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) и записывает каждый ответ новой строчкой в файл. Это позволяет избежать проблем с переполнением памяти, а также с падениями.

 
<?php

  $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";
  }


Категории: PHP, Script / Tool
Пометки: php как получить код ответа сервера
Яндекс.Метрика