ホームページ > バックエンド開発 > PHPチュートリアル > PHP 拡張機能がデーモンを実装する process_PHP チュートリアル

PHP 拡張機能がデーモンを実装する process_PHP チュートリアル

WBOY
リリース: 2016-07-13 09:57:04
オリジナル
903 人が閲覧しました

PHP 拡張機能はデーモンプロセスを実装します

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

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

1. nohupを使用する

コードをコピーします。コードは次のとおりです:


nohup php myprog.php >

デーモン化はここで実装されます。

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

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

2. PHPコードを使用して実装します

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

関数デーモン化()

{

$pid = pcntl_fork();

if ($pid == -1)

{

die("fork(1) が失敗しました!n");

}

エルセイフ ($pid > 0)

{

//ユーザー終了によってプロセスを開始させます

終了(0);

}

//ターミナルから離脱するには、ターミナルとは別の新しいセッションを作成します

posix_setsid();

$pid = pcntl_fork();

if ($pid == -1)

{

die("fork(2) が失敗しました!n");

}

エルセイフ ($pid > 0)

{

//親プロセスが終了し、残った子プロセスが最後の独立したプロセスになります

終了(0);

}

}

デーモン化();

睡眠(1000);

上記のコードを使用してデーモン化を実装します。PHP プログラムをバックグラウンドで実行する必要がある場合、カプセル化された関数 daemonize() を 1 回呼び出すだけで済みます。

注: ここでは標準入出力のリダイレクトは実装されていません。

http://www.bkjia.com/PHPjc/985143.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/985143.html技術記事 PHP 拡張機能はデーモン プロセスを実装します。通常、サーバー プログラムはシステムのバックグラウンドで実行されます。これは、通常の対話型コマンド ライン プログラムとは大きく異なります。 glibc には関数デーモンがあります。これに電話してください...
関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート