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