同社が使用する予定のタスクはおおよそ次のとおりです:
1 |
|
出力と標準エラーが空のデバイスにリダイレクトされることがわかります。これには特定の理由があります。いくつかの情報を確認したので、ここに説明します。
1. SSH 経由でサーバーにログインします。
2. 次のコードで新しい php ファイル test.php を作成します。
1 2 3 4 |
|
3. 次のコマンドを使用して、 test.php プログラム
1 |
|
/tmp/test.txt ファイルの内容を 1497613738 として表示します
4. 次に、次のコマンドを再度実行します。コマンドの実行後、すぐに exit コマンドを使用してログアウトします
1 |
|
5 次に、ssh 経由でサーバーにログインし、/tmp/test.txt ファイルの内容がまだ 1497613738 であることを確認します。これは、test.phpを2回目に実行したときに、file_put_contents関数が実行されなかったか、正常に実行されなかったことを意味します。
6 file_put_contents関数は実行されません。 7 理由:ユーザーがログインすると、標準出力がターミナルに反映されます。標準出力のファイルハンドルは1です。したがって、phpのecho("aaan")
により、システムコールwrite(1, "aaan", 4)が実行され、ターミナルにaaanが書き込まれます。ユーザーがログアウトするとセッションは終了します。セッションの終了時に、ターミナルで開いているすべてのファイル ハンドルを読み取りおよび書き込みできないように変更します。
ユーザーがログアウトしてから write(1, "aaan", 4) を実行すると、EIO エラーが報告されます。端末ハンドルが書き込み可能ではなくなったためです。 EIO エラーが発生すると、プロセスは終了します。方法 1:
リダイレクト記号 & を使用して、標準出力をホールにリダイレクトします。
1 2 |
|
1 2 3 4 5 |
|
このコマンドは、アカウントからログアウトした後、またはターミナルを閉じた後も、対応するプロセスを実行し続けることができます。 nohup は電話を切らない (n ohang up) という意味です。
1 &の説明は別記事をご覧ください
以上がスケジュールされたタスクの PHP の例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。