私は、大きなカスタムxmlファイルを読み込み、その情報をカスタム投稿タイプおよび多くの投稿メタ情報としてインポートするワードプレスプラグインを開発しました。それで私はたくさんのデータベーストランザクションを呼び出しています。プラグインは1回のPOST処理で数分間実行され、その後メモリ不足(250 MB)で中止されます。
問題を最小限にとどめることで、問題を示す最小限の例を示します。この例では約18キロバイトのリークがあり、これはプラグインの実行中に激増しています。クエリは与えられたタイトルの投稿が存在するかどうかをチェックします($title
)
echo "<p>memory: " . memory_get_usage() . "</p>";
global $wpdb;
$poststable = $wpdb->prefix."posts";
$items = $wpdb->get_results("SELECT ID FROM $poststable WHERE post_title='$title'");
unset($items);
$wpdb->flush();
echo "<p>memory: " . memory_get_usage() . "</p>";
出力はmemory:80777008 memory:80795376なので、違いは約18キロバイトです。それらのバイトはどこにありますか?これは少量のメモリですが、合計で数百メガバイトになります。
ありがとうございます。クリス
と言っています私は本当にそれについて考えませんでした。私はプラグインのクエリモニタを有効にしていましたが、これが問題でした。