開いているファイルやデータベース接続がリークしないかどうかは、どのように記述したかに大きく依存します。また、使用しているphpのバージョンによっても異なります。PHP 5.3 では、ガベージ コレクションに対処するために多くのことが行われました。
http://www.php.net/manual/en/features.gc.performance-considerations.php
操作がトランザクションであることが重要ではない場合、つまり、すべてかゼロか (たとえば、途中で失敗した場合) は、スクリプトの各実行が次の x 個のアイテムを処理するチャンクでこれに取り組みたくなるでしょう。かかる時間に応じて変数になります。そのため、何も行われなくなるまでスクリプトを繰り返し続ける必要があります。
これを行うには、Fat Controller というツールを使用することをお勧めします。
http://fat-controller.sourceforge.net
スクリプトを繰り返し続け、すべてが完了すると停止することができます。Fat Controller に、まだやるべきことがある、または PHP スクリプトからの終了ステータスを使用してすべてが完了したことを伝えることができます。Fat Controller Web サイトには、いくつかの使用例があります。たとえば、http: //fat-controller.sourceforge.net/use-cases.html#generating-newsletters
Fat Controller を使用してプロセスを並行して実行し、処理を高速化することもできます。ただし、並行して実行しすぎて速度が低下しないように注意してください。データベースに書き込んでいる場合、最終的にはハードディスクによって制限されます。これは、特別なことがなければ、最適な同時実行数が 1 になることを意味します。
最後の質問は、これをトリガーする方法です。おそらく、CRON から Fat Controller をトリガーするのが最善でしょう。
Fat Controller Web サイトには多くのドキュメントと例がありますが、具体的なガイダンスが必要な場合は、喜んでお手伝いします。