У меня был такой же вопрос! Так что отвечая для следующих посетителей на этот вопрос.
Простой HTML Dom имеет некоторые проблемы с утечкой памяти. Вы должны быть очень осторожны, когда вы «клонируете» объект с помощью его селектора. Избегайте этого!
С phpQuery это всего лишь одна команда, которая очищает все, насколько я знаю.
phpQuery::unloadDocuments();
Я тестировал phpQuery. Который, похоже, не имеет утечек памяти. Также очень и очень низкое использование памяти. Только 4 КБ на файл 90 КБ. Таким образом, похоже, что он анализирует в режиме реального времени и не имеет документа в памяти. По крайней мере, это то, что я нашел, я могу ошибаться.
Также попытался создать 20-30 документов и использовать разгрузку каждый раз, без увеличения памяти ... приятно!
Вот мой ответ:
include('phpQuery.php');
$pq = phpQuery::newDocument($html);
$projects = array();
$i = 0;
foreach ($pq['.project-preview'] as $work) {
// iteration returns PLAIN dom nodes, NOT phpQuery objects
$pqwork = pq($work);
$projects[$i]['name'] = $pqwork['div']->eq(1)->text();
// Unfortunately pq($work)['div']->eq(1)->text(); does not work
$i++;
}
phpQuery::unloadDocuments();
Было бы неплохо, если бы у нас было еще несколько примеров основных вещей! Хороший проект, плохая документация. Или, по крайней мере, я не смог найти документацию, объясняющую функцию text (), например.
Контрольные оценки:
phpQuery загружает документы на ~ 3,5 быстрее.
Простой HTML Dom выглядит на 30% быстрее при выборе: (