Я использую простой PHP-скрипт на провайдере Altervista для получения данных из очень большой таблицы HTML (более 6300 строк) по этой ссылке .
Проблема заключается в том, что «Максимальное время выполнения превышено на 30 секунд» во время цикла строк.
Я хотел бы получить данные XML или даже текстовые данные в формате CSV, есть ли более быстрый способ, чем зацикливание каждой строки?
<?php
set_time_limit(3000);
ini_set('max_execution_time', 3000);
function XML_Append($XML,$Q,$Sex,$TabCnt,$TabName) {
$pagecontent = file_get_contents($Q);
echo "DONE fetch";
$doc = new DOMDocument();
$doc->preserveWhiteSpace = false;
$doc->loadHTML($pagecontent);
$tables = $doc->getElementsByTagName('table');
$rows = $tables->item($TabCnt)->getElementsByTagName('tr');
$rowLen=$rows->length;
echo $rowLen;
for($ir = 0; $ir < $rowLen; ++$ir) {
echo $ir . "\r\n";
$row=$rows[$ir];
}
unset($doc);
}
$QUERY_SPRINT_FEMMINILE="http://risultati.fitri.it/rank.asp?Anno=%ANNO%&TRank=S&Ss=F&PunDal=0.00&PunAl=999.99";
$QUERY_SPRINT_MASCHILE="http://risultati.fitri.it/rank.asp?Anno=%ANNO%&TRank=S&Ss=M&PunDal=0.00&PunAl=999.99";
$QUERY="";
$ANNO="";
if (isset($_GET['Anno'])) {
$ANNO= $_GET['Anno'];
} else {
$ANNO="2019";
}
$QUERY=str_replace("%ANNO%",$ANNO,$QUERY_SPRINT_MASCHILE);
$xml = new SimpleXMLElement('<DocumentElement/>');
XML_Append($xml,$QUERY,"M",1,"SP");
echo "DONE";
?>
код цикла:
foreach ($rows as $row)
{
$xmlTable = $XML->addChild($TabName);
$xmlTable->addChild('_S', $Sex);
$cols = $row->getElementsByTagName('td');
$colLen=$cols->length;
for($i = 0; $i < $colLen; ++$i) {
$NomeColonna="C" . $i;
$value= $cols->item($i)->nodeValue;
$value=trim(str_replace(PHP_EOL, "", $value));
$value=str_replace("\xc2\xa0","",$value);
$xmlTable->addChild($NomeColonna,$value);
}
}