一般的なサーバープログラムはシステムのバックグラウンドで実行され、通常の対話型コマンドラインプログラムとは大きく異なります。 glibc には関数デーモンがあります。この関数を呼び出すと、現在のプロセスがターミナルから離れ、デーモン プロセスになる可能性があります。詳細については、「man デーモン」を参照してください。もちろん、現在のところ PHP にはそのような関数はありません。興味がある場合は、PHP 拡張関数を作成して実装することができます。
PHP コマンドライン プログラムのデーモン化を実装するには 2 つの方法があります:
1. nohupを使用する
コードをコピーします コードは次のとおりです:
nohup php myprog.php >
php myprog.php を単独で実行します。ctrl+c を押すと、プログラムの実行が中断され、現在のプロセスと子プロセスが強制終了されます。
php myprog.php & 実行プログラムもバックグラウンドで実行されますが、実際にはユーザーがターミナルを終了するとプロセスが強制終了されます。
2. PHP コードを使用して実装します リーリー
上記のコードを使用してデーモン化を実装します。PHP プログラムをバックグラウンドで実行する必要がある場合、カプセル化された関数 daemonize() を 1 回呼び出すだけで済みます。
注: ここでは標準入出力のリダイレクトは実装されていません。