このシナリオにおける Apache Web サーバーの最適な構成についての意見を聞きたいです。
定期的に実行されるスクリプト (PHP) が多数あり、そのほとんどが同時に実行されるか、または cron ジョブを介して同じ時間間隔で実行されます。
ウェブページと呼ばれ、PHP で記述されたこれらのスクリプトをどんどん追加していくと、それらがすべて同時にトリガーされるため、途中でいくつかが「失われる」可能性があると少し心配になります。
実際にこれらのページを見る人は誰もいませんし、これらのページが読み込まれるのを待つ人もいません (数秒の遅延は問題ではありません)。そのため、Apache が一定期間内に処理できない場合にページを破棄するのではなく、すべてのページ呼び出しが実際に処理されるようにするには (数秒の遅延があっても)、apache2.conf のどの設定を確認すればよいのか疑問に思っていました (Web サーバーを閲覧しているユーザーが閲覧している標準の html/php ページとは異なり、これらは実際には誰も待っていないスクリプトを実行するページです)。
私の理想的な解決策は、特定の時間枠内に実行されなかったという理由で Apache がそれらを強制終了するのではなく、それら (cron 経由で呼び出されるページ) が積み重ねられ、次のバッチが呼び出されるまで、またはより静かな期間に 1 つずつ処理されることです。
もちろん、次のバッチの実行予定時間よりも長い時間キューイングされている場合は問題があることは理解しています。
同様に、Apache がキューに入れたものや処理中のページを表示するにはどうすればよいでしょうか?
よろしくお願いします。
答え1
cron にアクセスできる場合、このコンテキストで Apache を使用する必要性はあまりないと思います。ページを提供する必要はなく、コードを実行するだけでよいようです。
単純にこんなことを試してみてはいかがでしょうか?
#!/usr/bin/env php
<?php
[Your code here.
Perhaps even send e-mail updates
including with the status of your script,
or update a lightweight database each time
the script has run.]
このスクリプトを /path/to/script.php として保存し、crontab で を呼び出すphp /path/to/script.php
(または、./path/to/script.php
ファイルに実行権限を追加する場合は を使用するchmod +x
) だけで、作業が完了し、Apache のオーバーヘッドを大幅に削減できます。