крон тут не причем - зачем делать карту чаще чем раз в секунду?
или имеет в виду скрипт отрабатывает 30 секунд( в случае ограничения времени ан сервере и не возможности его снять) далее скажем каждые 5 сек сохраняем результат куданить (ну тут опять операции ввода вывода ёмкие ...) ,дебри, задача была в том чтоб раз или два в сутки запускался крон и отрабатывал пхп в фоне, пусть ограничения по времени нету.
делал через file_get_content() , не через курл - думал отработает быстрее.
вставил в кусок разбора страницы регулярное не помогло ... напсиал всё с нуля заработало быстрее !!!! но через минуту опять "тупит", но всё же ))))
вот код
<? set_time_limit(600); $server=$_GET[server]; if(!$server) {echo "<form ><input name=server><input type=submit></form>";exit;}
function parse($index,$s){global $server;global $link; global $file; global $url2;
if($index=="/") {$index="";}
$link["$index"]=1; $adr="http://$server/$index"; echo " [".count($url2)."] ".microtime(true)." ".$adr."<br/>"; flush();
$str=@file_get_contents($adr);/*$str=iconv("utf-8","windows-1251",$str);//опционально*/if(!$str) { echo "<b>"."http://$server/$index"."</b>";return 0; }
//@preg_match_all('/<a\s([^<]*?)href=[\'\"]?(?!https?:|mailto:|ftps?:)(\.{0,2}\/)?([^<>\'\"]+)[\'\"]?/im',$str,$rez);
@preg_match_all('/<a\s([^<]*?)href=[\'\"]?(\.{0,2}\/)?([^<>\'\"]+)[\'\"]?/im',$str,$rez);
foreach($rez[3] as $nom=>$newurl){
if($link[$newurl]!=1){$url2[]=$newurl; $link[$newurl]=1;}
}
}
$url2[]="/";
while(count($url2)){
$url3=array_pop($url2);
parse($url3,"");
}
?>
идея проста - два массив в одном проверенные ссылки в другом новые.