LinuxのコマンドラインからバックグラウンドでPHPスクリプトを継続的に実行しようとしています。私はコマンドphp filename.php &
を試してみましたが、スクリプトの実行が非常に迅速に終了するようですが、プロセスが終了するまで実行し続ける必要があります。コマンドラインからバックグラウンドプロセスとしてPHPスクリプトを実行する
提案がありますか?
LinuxのコマンドラインからバックグラウンドでPHPスクリプトを継続的に実行しようとしています。私はコマンドphp filename.php &
を試してみましたが、スクリプトの実行が非常に迅速に終了するようですが、プロセスが終了するまで実行し続ける必要があります。コマンドラインからバックグラウンドプロセスとしてPHPスクリプトを実行する
提案がありますか?
スクリプトにエラーはありませんか?これは、通常、「実行が非常に迅速に終了するようになります。」です。 まず、それが持っている可能性のあるエラーを表示するには、スクリプトの先頭にerror_reporting(E_ALL); ini_set('display_errors', 1);
を追加し、あなたが使用することができます。セッションが切断された場合でも、コマンドまたはユーザー ログを実行しますnohupを
nohup php filename.php &
でる。
OR
nohup php filename.php >/dev/null 2>&1 &
上記と同じが、
nohup.out
ファイルを作成しません。
使用することもできます:クライアントの接続が切断されたスクリプトの実行を終了するかどうか
ignore_user_abort(1);
を設定
set_time_limit(0);
スクリプトの最大実行時間を制限します。この場合は、 プロセスが終了するか、またはApacheプロセスが再開するまで実行されます。
php
とfilename.php
パスが代わりphp
とfilename.php
の、あなたが/usr/bin/php
と/full/path/to/filename.php
を使用することができ、フルパスとして提供されてもよいです。
フルパスはを避けてください。ファイルが見つかりませんエラー。
出力リダイレクトがないと、echoステートメントがスクリプトを終了させますか? – Kyle
@Pedro Lobitoありがとうございます。 – whitesiroi
歓迎@whitesiroi –
nohup /path/to/command-name arg1 arg2 &
どこを使用してみてくださいシェルスクリプトやコマンド名の名前。コマンドやシェルスクリプトに引数を渡すことができます。
&
:nohupは、バックグラウンドで実行されるコマンドを自動的に入れません。コマンドラインを&シンボルで終了することで明示的に行う必要があります。
[回答](http://stackoverflow.com/a/6989340/6209665)。[コードの書式設定](https://meta.stackexchange.com/que stions/22186/how-do-i-format-my-code-blocks)をご覧ください。 – Andrew
nohup php file.php > /dev/null 2>&1 &
これらのコマンドのmore-thans(>
)は、プログラムの出力をどこかにリダイレクトします。この場合、何かが/dev/null
にリダイレクトされている、と何かが、アウト、およびエラーに&1
標準にリダイレクトされている
プログラムの入力と出力の3つの標準ソースがあります。標準入力は通常、対話型プログラムの場合はキーボードから、他のプログラムの出力を処理している場合は別のプログラムから行われます。プログラムは通常、標準出力に出力しますが、標準出力に出力することもあります。これら3つのファイル記述子(「データパイプ」と考えることができます)は、しばしばSTDIN, STDOUT, and STDERR
と呼ばれます。
名前が付けられていない場合もありますが、番号が付けられています。それらの組み込み番号はの順になっています。デフォルトでは、明示的に名前を付けたり番号を付けたりしないと、STDOUT
と言います。
上記のコマンドは、標準出力を/dev/null
にリダイレクトします。これは不要なものをダンプして標準出力にリダイレクトする場所です(先に&
を置く必要がありますこれを行う)。
簡単な説明は「このコマンドからのすべての出力をブラックホールに押し込む」ということです。プログラムを本当に静かにする良い方法です。
&
は、バックグラウンドでコマンドを置きます。
ref:https://www.xaprb.com/blog/2006/06/06/what-does-devnull-21-mean/
すぐに終了するとはどういう意味ですか?最後に&は、スクリプトがバックグラウンドで実行されている間にシェルコマンドを実行し続けるプロンプトを返します。まだ "jobs"と入力して実行中であるかどうかを確認できます – Zak
error_reporting(E_ALL) display_errors = 1?いくつかのエラーがあり、プロセスが異常終了している可能性があります。 – marcelog
try:exec( "nohup php file.php>/dev/null 2> &1 &"); –