ホームページ > バックエンド開発 > PHPチュートリアル > phpQuery がメモリを大量に消費する場合の対処方法_PHP チュートリアル

phpQuery がメモリを大量に消費する場合の対処方法_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:25:10
オリジナル
745 人が閲覧しました

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";
}

メモリ使用量は安定しています。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/825183.html技術記事 phpQuery は、php で実装された jQuery に似たオープン ソース プロジェクトで、サーバー側で jQuery 構文の Web ページ要素を解析できます。 Web ページを照合する通常の方法やその他の方法と比較して、...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート