2

Web サイトでメンテナンス タスクを実行するために使用する PHP スクリプトがあります。私は cron を使用して X 時間ごとに実行していますが、サイト管理者が手動で実行したい場合はオプションとして使用したいと考えています。管理しやすいように、最後にさまざまなメッセージをエコーし​​てブラウザに結果を表示する必要があります。

質問は、スクリプトが cron で実行されたときに結果をエコーアウトするかどうか、またはエラーが発生するかどうかは問題ですか? 管理者が実行したときにブラウザにのみ出力する必要がありますか? スクリプトがブラウザーでいつ実行され、いつ cron から実行されるかを知る方法はありますか?

ありがとう。

4

3 に答える 3

1

cron スクリプトの出力は、多くの場合、サーバー管理者にメールで送信されます。これは煩わしいので、エラーが発生しなければ、通常は何も出力したくありません。

どのタイプのインターフェースが使用されたかを確認できphp_sapi_name()ます (cron ジョブの「cli」)。

PHP ドキュメントを参照してください。

他の回答では出力を /dev/null にリダイレクトすることが提案されているため、エラーが発生したかどうかを知る方法がないことに注意してください。cronjob が機能しなくなる可能性があり、長い間わかりません...

于 2013-06-06T11:45:54.887 に答える
0

cron ジョブの出力が stderr または stdout にある場合、cron はその出力を電子メールで cron ジョブ ユーザー、または cron ファイルで最後に設定された MAILTO 変数で指定されたアドレスに送信します。

通常は、問題がない限り出力が生成されないように、cron ジョブ/スクリプトを作成する必要があります。鳴きオオカミの事です。cron ジョブが常にうるさくしていると、必要なときに注意を払うことができなくなります。

そのため、コマンドラインから実行したときに有益な出力が得られる可能性のあるアプローチがいくつかあります。

  1. 有益なエラー メッセージを stdout に書き込み、stderr を本当に注意が必要なもののために予約することができます。その後、cron ジョブ仕様パイプ stdout を /dev/null に設定できます。

  2. 出力のオンとオフを切り替えるコマンド ライン オプションを使用できます。例: --verbose または --quiet。

ターミナルの存在をテストすることは可能ですが、上記のアプローチのいずれかを使用したほうがよいと思います。その場合、動作はそれほど驚くべきものではありません。

于 2013-06-06T11:50:26.373 に答える
0

問題ありません。

このechoコマンドは、php の標準出力を使用します。コンソールで php スクリプトを実行すると、echoその結果がコンソールに出力されます。

crontab の標準出力は、その UNIX ディストリビューションに依存する可能性があると思います。

echo equal fputs( STDout )を参照してください。. この質問には、いくつかの貴重な情報があります。

于 2013-06-06T11:54:22.147 に答える