phpQuery は、php で実装された jQuery に似たオープン ソース プロジェクトで、サーバー側で jQuery 構文の Web ページ要素を解析できます。 Web ページを照合する通常の方法や他の方法と比較して、phpQuery は非常に使いやすいです。
phpQuery を使用して Web ページを収集するときに、問題が発生しました。大量の Web ページを処理した後、phpQuery が驚くほど大量のメモリを占有します (すぐに 1G を超えます)。
たとえば、次のコード:
コードをコピーします コードは次のとおりです:
while (true) {
phpQuery::newDocumentFile($htmlFile);
// Web ページ要素を処理しています...
echomemory_get_usage() "n";
}
を実行します。上記のコードはメモリをすぐに消費してしまうので注意してください。
phpQuery のソースコードを確認したところ、phpQuery は Web ページを処理するたびに DOMDocumentWrapper オブジェクトを生成し、各 DOMDocumentWrapper オブジェクトは静的メンバー $documents (phpQuery::createDocumentWrapper) に保存されることがわかりました。変数 これは配列であり、Web ページの配列要素が解析されるたびに 1 つ追加されます。
phpQuery::$documents[$wrapper->id] = $wrapper;
問題を見つけたら、Web ページを解析するたびに phpQuery::$documents を空白のままにするだけで簡単に解決できます。
コードをコピーします コードは次のとおりです:
while (true) {
phpQuery::newDocumentFile($htmlFile);
// Web ページ要素を処理しています...
phpQuery::$documents = array();
echomemory_get_usage() . "n";
}
メモリ使用量は安定しています。
http://www.bkjia.com/PHPjc/825183.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/825183.html技術記事 phpQuery は、php で実装された jQuery に似たオープン ソース プロジェクトで、サーバー側で jQuery 構文の Web ページ要素を解析できます。 Web ページを照合する通常の方法やその他の方法と比較して、...