ホームページ >バックエンド開発 >PHPチュートリアル >PHP の高度なプログラミングの例: デーモン プロセスの作成、デーモン プロセスのプログラミング例_PHP チュートリアル

PHP の高度なプログラミングの例: デーモン プロセスの作成、デーモン プロセスのプログラミング例_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:19:31979ブラウズ

PHP の高度なプログラミングの例: デーモンの作成、デーモンのプログラミング例

1. デーモンプロセスとは

デーモンは、ターミナルとは別個のバックグラウンドで実行されるプロセスです。デーモンプロセスは端末から分離されているため、プロセス実行中の情報が端末に表示されることはなく、端末が生成する端末情報によってプロセスが中断されることはありません。

たとえば、Apache、nginx、mysqlはすべてデーモンプロセスです

2. デーモンを開発する理由

多くのプログラムはサービスの形式で存在しており、ターミナルや UI との対話はありません。TCP/UDP ソケット、UNIX ソケット、fifo など、他の方法で他のプログラムと対話する場合があります。プログラムが開始されると、条件が満たされるまでバックグラウンドでタスクの処理を開始します。

3. アプリケーション開発にデーモンプロセスを使用する場合

現在のニーズを例に挙げると、プログラムを実行し、特定のポートをリッスンし、サーバーによって開始されたデータを受信し続け、データを分析して処理し、結果を使用するデータベースに書き込む必要があります。 ZeroMQ はデータの送受信を実装します。

このプログラムの開発にデーモン プロセスを使用しない場合、プログラムが実行されると、現在の端末ウィンドウ フレームが占有され、現在の端末キーボード入力の影響も受けて、プログラムが誤って終了する可能性があります。

4. デーモンプロセスのセキュリティ問題

プログラムが非スーパーユーザーとして実行されることを期待しています。これにより、プログラムが脆弱性によりハッカーによって制御された場合、攻撃者は実行権限を継承することのみが可能で、スーパーユーザー権限を取得できなくなります。

プログラムが実行できるインスタンスは 1 つだけであることを望みます。3 つ以上のプログラムを実行しないと、ポートの競合やその他の問題が発生します。

5. デーモンプロセスの開発方法

例1. デーモンプロセスの例

リーリー

5.1. プログラムの起動

以下はプログラム開始後にバックグラウンドに入るコードです

現在のプロセスのステータスはプロセス ID ファイルによって決定されます。プロセス ID ファイルが存在する場合、コード file_exists($this->pidfile) によって実装されるプログラムが実行中であることを意味しますが、その後プロセスは強制終了されます。ファイルは実行する前に手動で削除する必要があります

リーリー

プログラムの開始後、親プロセスが起動され、子プロセスがバックグラウンドで実行され、子プロセスの権限が root から指定されたユーザーに切り替えられ、pid がプロセス ID ファイルに書き込まれます。

5.2. プログラムの停止

プログラムは停止し、pid ファイルを読み取り、posix_kill($pid, 9) を呼び出し、最後にファイルを削除します。

リーリー

高度な PHP プログラミングには Java が含まれますか

非常に高度な技術者が参加します。 Java では非常に多くのことができるからです。

PHPデーモンの制作アイデアとアプリケーションが緊急に必要です。長期的な協力の可能性がありますが、それを得るにはお金がありません

特定のアイデアについては、ignore_user_abort を使用することをお勧めします。プライベート チャットや長期的な協力も可能ですが、時間が少し厳しいです。


http://www.bkjia.com/PHPjc/873340.html

tru​​ehttp://www.bkjia.com/PHPjc/873340.html技術記事 PHP の高度なプログラミング例: デーモン プロセスの作成、プログラミング例 デーモン プロセス 1. デーモン プロセスとは何ですか? デーモン プロセスは、ターミナルから切り離され、バックグラウンドで実行されるプロセスです。デーモンがターミナルから切り離されています...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。