Как часто loadHTMLFile вызывается в одном PHP-скрипте? - PullRequest
0 голосов
/ 25 июня 2018

Поскольку мой английский плохой, вопросы о названии могут быть немного раздражающими, но я уточню:

В начале моего PHP-скрипта я вызываю HTML-файл, чтобы извлечь из него контент с помощью XPath.

$url = "http://www....";

$html = new DOMDocument();
libxml_use_internal_errors(true);
$html->loadHTMLFile($url);
$xpath = new DOMXPath($html);
libxml_clear_errors();

Целевой веб-сайт, с которого я получаю контент, содержит много необходимой мне информации, но я должен выполнить несколько различных XPath-запросов (30, чтобы быть точным).

$xpath_match = $xpath->query('...');

Моей первой мыслью было каждый раз, когда я использую XPath-запрос по loadHTMLFile, он вызывает целевой веб-сайт индивидуально - снова и снова. Это приведет к большому (ненужному) трафику и сильно замедлит мой скрипт.

Я немного погуглил, прочитал документацию , но оба, похоже, предполагают, что после того, как я позвонил на целевой веб-сайт в начале моего скрипта, он сохраняется до тех пор, пока скрипт выполняется, и каждый XPath- запрос только читает сохраненный контент.

Однако вчера я получил сообщение об ошибке loadHTMLFile, сказав, что слишком часто звонил в последний час. Тем не менее, я только 10 раз обновлял свой сайт с помощью PHP-скрипта примерно за 10 часов. Это не часто, и в будущем я планирую ориентироваться примерно на 150–200 вызовов на веб-сайте в час.

Кто-нибудь, кто может прояснить проблему? И если содержание хранится, что было причиной ошибки? И есть ли обходной путь?

1 Ответ

0 голосов
/ 25 июня 2018

Загрузите HTML один раз, используя file_get_contents():

$code = file_get_contents('http://www.example.com/');
$html = new DOMDocument();
libxml_use_internal_errors(true);
$html->loadHTML($code);
...