$ dom-> loadHTMLFile () зависает в теме WordPress - PullRequest
0 голосов
/ 08 мая 2019

Когда я создаю простой test.php файл с кодом

<?php
$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTMLFile('http://localhost');
libxml_use_internal_errors(false);
print_r($dom);
?>

положите его в корень сайта WordPress и перейдите по ссылке localhost/test.php, я успешно и сразу же получаю вывод типа

DOMDocument Object ([doctype] => (значение объекта опущено) [внедрение] => (значение объекта опущено) [documentElement] => (значение объекта опущено) [actualEncoding] => utf-8 ...

Но если я добавляю код в файл темы WordPress, например, в конец footer.php и загружаю любую страницу веб-сайта, клиент зависает (страница продолжает загружаться), и я вижу на вкладке "Процессы" задачи Windows Диспетчер, что процесс httpd.exe (Apache) продолжает потреблять все больше оперативной памяти, пока я не остановил загрузку страницы.

В чем причина и как заставить $dom->loadHTMLFile() работать под темой WordPress?

пс. Я заметил, что первая строка

$dom = new DOMDocument;

не вызывает никаких проблем, но это делает строку

$dom->loadHTMLFile('...');

1 Ответ

1 голос
/ 08 мая 2019

Это может предотвратить рекурсию:

if (!isset($_GET["do_not_recurse"])) {
    $url = "https://example.com/page.html?id=12";
    $arg = (strpos($url, "?") === FALSE ? '?' : '&') . "do_not_recurse=true";   
    $dom = new DOMDocument;
    $dom->loadHTMLFile($url . $arg);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...