PHP のメモリ使用量についていくつか質問があります。自力で色々テストしてみますが、色々とアドバイスいただけると助かります。
私は最近、PHP 関数 ignore_user_abort() について知りました。これにより、ユーザーがページを閉じてもスクリプトを実行し続けることができます。Cron ジョブの設定にはさまざまな落とし穴があるため、Cron ジョブの代わりにこれをメール ニュースレター ツールに使用することを考えていました。ユーザーをページにとどまらせ、AJAX リクエストを使用し、ページ コンテンツが配信された後にスクリプトの一部を実行するという別の方法にも問題があります。
私の解決策は、スクリプトの最初に call ignore_user_abort(true) を実行し、最後にコンテンツが生成された後、flush() を適切に呼び出してから、ニュースレター スクリプトを実行することです。または、AJAX でこれを行います。
まず第一に、そのアプローチに問題があると思う人はいますか?
次に、時間制限を設定せずにスクリプトを使用し、各電子メールを while ループで処理した場合、一度に実行した場合のメモリ使用量はどのようになりますか? 新しい変数を使用するのではなく、変数を上書きするので、それは低いと思います。
第 3 に、たとえば 1 回の実行で 1000 通など、大量のメールを送信する場合、メール サーバーに過負荷をかけたくないからです。私の cron ジョブでは、スクリプトを 5 分ごとに実行し、50 通の電子メールのバッチを送信します。これを 1 回のパスで行う場合、50 通のメールを送信し、たとえば 5 分間スリープを呼び出してから、さらに 50 通のメールを続けることはできますか? もしそうなら、スリープ期間中のスクリプトのメモリ使用量はどうですか? これは効率的な方法でしょうか?
ここで私が実際にやろうとしているのは、Cron ジョブを設定するという複雑な (技術に詳しくない人にとっては) タスクを必要としないニュースレター ツールを作成する方法を考え出すことです (これは Cron ジョブのオプションでさえありません)。共有ホスト)、ユーザーがブラウザーを 1 つのページで開いたままにしておく必要はありません。
アイデアの提案やフィードバックは大歓迎です。ありがとう!