PHP Simple HTML Dom Parser を使用して、いくつかのサイトからの情報を解析しようとしています。何をどこにでも構いません。しかし、それには大きなメモリの問題があるようです。HTML コードをわずか 6kB に削減することができましたが、いくつかの要素を見つけてデータベースに保存するスクリプトは、700MB の RAM と 1GB を超える仮想メモリを必要とします! ->clear() を使用してメモリを解放する必要があることをどこかで読みましたが、そうではないようです。
結果を変数に代入して、str_get_html()
1回と5回使用します。->find()
$main_html = str_get_html($main_site);
$x = $main_html->find(...);
$y = $main_html->find(...);
etc.
たとえば$y->clear()
、 $y を使用した後に使用しようとしましたが、存在しても truePHP Fatal error: Call to a member function clear() on a non-object
であってもエラーが発生します。のリターンもします。$y
if($y)
foreach($y) echo $y->plaintext
plaintext
$y
トップから:
PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
8839 username 20 0 1068M 638M 268 R 23.0 8.0 0:08.41 php myscript.php
なにが問題ですか?
簡単なテスト:
echo "(MEM:".memory_get_usage()."->";
$product = $p->find('a',0)->href;
echo memory_get_usage()."->";
unset($product);
$p->clear();
unset($p);
echo memory_get_usage().")";
結果は次のとおりです。
(MEM:11865648->11866192->11865936)
より読みやすい形式:
11865648->
11866192-> (+544 in total)
11865936 (+288 in total)
もちろん、それが言うように $product->clear() を使用することはできませんPHP Fatal error: Call to a member function clear() on a non-object