Feedapiから入ってくる古い未公開のノードをクリアするために使用されるdrushスクリプトがあります。スクリプトは非常に単純です。特定のタイプ(「投稿」)と年齢(90日以上)のステータス0のすべてのノードを取得し、それらをループして、各ノードを削除します。
スクリプトは一度に約4,000ノードを実行し、PHPプロセスで使用可能なメモリを使い果たします。スクリプトのフットプリントがtop
から増加し、4,000ノードの制限がある程度一貫性があります。ただし、100,000を超えるノードを処理する必要があるため、プロセスで使用可能なRAMを取得するのに十分な時間、ジャッキアップするのは実用的ではないと思います。それを使い果たします。
RAM消費している)を解放するために、各反復の最後に追加できるものはありますか?
その他のオプション: http://groups.drupal.org/node/189694
DrupalバッチAPI および Drushから呼び出す を使用できます。 DrushからのバッチAPIの使用方法に関する別のリファレンスとして、 Drush batchTestユニットテスト を使用できます。
SELECTクエリでSQLのLIMIT(およびOFFSET)コマンドを使用して、DBから一度にノードの一部、たとえば一度に3000だけを取得するのはどうですか?次に、それらの「チャンク」をループします。