PHPプログラムのデーモン化例の詳細説明

小云云
リリース: 2023-03-21 21:52:02
オリジナル
1151 人が閲覧しました

通常、サーバー プログラムはシステムのバックグラウンドで実行されます。これは、通常の対話型コマンド ライン プログラムとは大きく異なります。 glibc には関数デーモンがあります。この関数を呼び出すと、現在のプロセスがターミナルから離れ、デーモン プロセスになる可能性があります。詳細については、「man デーモン」を参照してください。もちろん、現在のところ PHP にはそのような関数はありません。興味がある場合は、PHP 拡張関数を作成して実装することができます。

PHP コマンドライン プログラムのデーモン化を実装するには 2 つの方法があります:

1. nohup を使用します

nohup php myprog.php > log.txt &
ログイン後にコピー

ここでデーモン化が実現されます。

php myprog.php を単独で実行します。ctrl+c を押すと、プログラムの実行が中断され、現在のプロセスと子プロセスが強制終了されます。

php myprog.php & 実行されたプログラムはバックグラウンドでも実行されますが、実際には端末に依存し、ユーザーが端末を終了するとプロセスが強制終了されます。

2. PHP コードを使用して

function daemonize()
{$pid = pcntl_fork();if ($pid == -1)
{die("fork(1) failed!\n");
}elseif ($pid > 0)
{//让由用户启动的进程退出exit(0);
}//建立一个有别于终端的新session以脱离终端posix_setsid();$pid = pcntl_fork();if ($pid == -1)
{die("fork(2) failed!\n");
}elseif ($pid > 0)
{//父进程退出, 剩下子进程成为最终的独立进程exit(0);
}
}daemonize();sleep(1000);
ログイン後にコピー
を実装します。PHP プログラムをバックグラウンドで実行する必要がある場合は、カプセル化された関数 daemonize() を 1 回呼び出すだけで済みます。

注: ここでは標準入出力のリダイレクトはありません。

関連する推奨事項:

PHP プログラムのデーモン化

以上がPHPプログラムのデーモン化例の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート