У меня есть каталог, полный файлов XML. Для каждого из этих файлов я делаю поиск в RIPE . Для каждого поиска я делаю пару запросов RegEx по возвращенному HTML-коду. Но после нескольких циклов file_get_contents перестает возвращать данные, и все мои операции после выполняются с пустой строкой.
Я подумал, что PHP может зависать, так как загрузка этих страниц занимает некоторое время. Но не будет ли выполнение сценария полностью остановлено? Вместо этого все циклы завершаются и выводят свой HTML-код, хотя и без содержимого.
Я также предполагаю, что может быть какое-то максимальное количество запросов для второй сделки с PHP.
Может ли кто-нибудь здесь пролить свет на это?
Спасибо
Изменить: Чтобы объяснить мой заголовок, мой друг и я выполняли сценарий одновременно. Вот почему я предполагаю, что PHP устанавливает ограничение на количество запросов, которые он может отправить за минуту или около того, потому что кажется, что PHP управляет различным числом циклов, прежде чем он прекратит возвращать данные.
Редактировать: Добавлен код: (я полагал, что он не нужен, из-за моего объяснения проблемы)
<?php
set_time_limit(0);
include "pagebase.php";
$page = new pagebase();
$page->jQuery = true;
$page->formatDoc = false;
$page->addScript("javascript.js");
$page->addStylesheet("../codeclean.css");
$page->addStylesheet("stylesheet.css");
$page->title = "...";
$directory_path = "xml_documents";
$directory = scandir($directory_path);
$files = array();
foreach($directory as $string)
{
if(preg_match("/.*\.xml/", $string, $result) > 0)
array_push($files, $result[0]);
}
$content =
"
<table cellpadding=\"0\" cellspacing=\"0\">
<tr>
<td colspan=\"7\">
<center><h2>...</h2></center>
</td>
</tr>
<tr>
<td class=\"header_cell\">Case ID</td>
<td class=\"header_cell\">Description (From RIPE)</td>
<td class=\"header_cell\">IP</td>
<td class=\"header_cell\">Fil</td>
<td class=\"header_cell\">Time</td>
<td class=\"header_cell\">Type</td>
</tr>
";
foreach($files as $index => $file)
{
$xml = simplexml_load_file("$directory_path/$file");
$id = trim($xml->Case->ID);
$ip = trim($xml->Source->IP_Address);
$title = trim($xml->Content->Item->Title);
$time = trim($xml->Source->TimeStamp);
$type = trim($xml->Source->Type);
$desc_result = array();
$info_result = array();
$RIPE_result = file_get_contents("http://www.db.ripe.net/whois?searchtext=$ip");
preg_match("/(?<=descr:)(\s*)(.*)/", $RIPE_result, $desc_result);
preg_match_all("/<pre>.*<\/pre>/sm", $RIPE_result, $info_result);
$info_result[0] = implode("", $info_result[0]);
if(count($desc_result) < 1) $desc_result[0] = "<font style=\"color:red\">No description found</font>";
else $desc_result[0] = trim($desc_result[0]);
$content .=
"
<tr id=\"info_row_$index\">
<td class=\"info_cell\">$id</td>
<td class=\"info_cell\">$desc_result[0]</td>
<td class=\"info_cell\">$ip</td>
<td class=\"info_cell\">$title</td>
<td class=\"info_cell\">$time</td>
<td class=\"info_cell\">$type</td>
</tr>
<tr id=\"expanded_row_$index\">
<td class=\"expanded_cell\" colspan=\"7\">
<div id=\"content_container_$index\">
<input type=\"button\" class=\"pastey_button\" rel=\"$index\" value=\"Get info\" />
<div id=\"RIPE_$index\">$info_result[0]</div>
</div>
</td>
</tr>
";
}
$content .=
"
<tr>
<td colspan=\"6\">Vi har totalt ".count($files)." henvendelser.</td>
</tr>
</table>
";
$page->body = $content;
$page->drawPage();
?>
Тестирование встроенных code
блоков