ホームページ バックエンド開発 PHPチュートリアル ワーカーマンノート-phpはデーモンプロセスを作成します

ワーカーマンノート-phpはデーモンプロセスを作成します

Jul 29, 2016 am 08:51 AM
exception fork pid posix

data-id="1190000005056078" data-license="sa">

使用関数

<code>pcntl_fork();//创建子进程
posix_setsid();//设置当前进程为进程组长

posix_getpid();//获取进程id</code>
ログイン後にコピー

作業員中尉 一般プロセス

<code>/**
 * Run as deamon mode.
 *
 * @throws Exception
 */
protected static function daemonize()
{
    if (!self::$daemonize) {
        return;
    }
    /**
     * 重设文件权限掩码
     * 子进程从父进程继承了文件权限
     * 若子进程不涉及到文件创建,可取消
     */
    umask(0);
    $pid = pcntl_fork();//创建子进程
    if (-1 === $pid) {
        throw new Exception('fork fail');
    } elseif ($pid > 0) {
        exit(0); //父进程退出
    }
    /**
     * 更改子进程为进程组长
     * 使子进程摆脱父进程控制
     */
    if (-1 === posix_setsid()) {
        throw new Exception("setsid fail");
    }
    // Fork again avoid SVR4 system regain the control of terminal.
    $pid = pcntl_fork();
    if (-1 === $pid) {
        throw new Exception("fork fail");
    } elseif (0 !== $pid) {
        exit(0);
    }
}</code>
ログイン後にコピー

その他の指示

基本概念

デーモンプロセス: Linuxのバックグラウンドサービスプロセス。これは存続期間の長いプロセスであり、通常は制御端末から独立しており、定期的に何らかのタスクを実行するか、発生する特定のイベントの処理を待機します。デーモンは多くの場合、システムの起動時に開始され、システムのシャットダウン時に終了します。

プロセス グループ: 1 つ以上のプロセスの集合です。プロセスグループはプロセスグループIDによって一意に識別されます。プロセス番号 (PID) に加えて、プロセス グループ ID もプロセスの必須属性です。各プロセスグループにはリーダープロセスが存在し、リーダープロセスのプロセス番号はプロセスグループIDと一致します。また、プロセスグループ ID はグループリーダープロセスの終了による影響を受けません。

セッション サイクル: セッションは 1 つ以上のプロセス グループの集合です。通常、セッションはユーザーがログインすると開始され、ユーザーがログアウトすると終了します。この期間中、ユーザーによって実行されるすべてのプロセスがこのセッションに属します。

プロセスを作成

  1. 子プロセスをフォークし、親プロセスが終了します

  2. 子プロセスをチームリーダープロセスに変更します

  3. 現在のディレクトリをルートディレクトリに変更します(chdir())

  4. ファイル許可マスクのコードをリセット

  5. ファイル記述子を閉じる

  6. デーモンが終了し、SIGCHLDシグナルを処理する

信号処理

//TODO

参照

PHPはデーモン

上記では、Workerman Notes-php 作成デーモンのプロセスを、そのプロセスの側面も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java での ConcurrentModificationException 例外の原因と解決策 Java での ConcurrentModificationException 例外の原因と解決策 Jun 25, 2023 am 10:33 AM

Java では、複数のスレッドがコレクション オブジェクトを同時に操作すると、ConcurrentModificationException 例外が発生することがあります。この例外は通常、要素を変更または削除するときにコレクションを走査するときに発生します。これにより、コレクションの状態が不整合になり、異常なエラーがスローされます。 。この記事では、この例外の原因と解決策について詳しく説明します。 1. 例外の原因 通常はConcurrentModificationException例外

PHP の POSIX 拡張機能を使用するにはどうすればよいですか? PHP の POSIX 拡張機能を使用するにはどうすればよいですか? Jun 03, 2023 am 08:01 AM

PHP の POSIX 拡張機能は、PHP が POSIX 準拠のオペレーティング システムと対話できるようにする関数と定数のセットです。 POSIX (PortableOperatingSystemInterface) は、ソフトウェア開発者がさまざまな UNIX または UNIX 類似のオペレーティング システム上で実行できるアプリケーションを作成できるように設計された一連のオペレーティング システム インターフェイス標準です。この記事では、PHP 用の POSIX 拡張機能のインストールと使用方法を紹介します。 1. PHP の POSIX 拡張機能を次の場所にインストールします。

Win7 タスク マネージャーで pid を表示するにはどうすればよいですか? エディターがその表示方法を教えてくれます。 Win7 タスク マネージャーで pid を表示するにはどうすればよいですか? エディターがその表示方法を教えてくれます。 Jan 11, 2024 pm 07:00 PM

pid 識別子に馴染みのない友人も多いかもしれませんが、タスク マネージャーで確認できます。ただし、一部のユーザーはタスク マネージャーを開いたときに PID 識別子を見つけることができません。実際、ユーザーがプロセス PID 識別子を表示したい場合は、それを表示するために「タスク マネージャー」の関連設定を行う必要があります。次のエディタでは、win7 システムを例として、プロセス PID 識別子の表示方法を説明します。 PID 識別子は、Windows オペレーティング システムによって実行中のプログラムに自動的に割り当てられる一意の連続番号です。プロセスが終了した後、PID はシステムによってリサイクルされ、新しく実行中のプログラムに割り当てられ続ける場合があります。ユーザーがプロセスを表示する必要がある場合、タスクマネージャーを使用して確認することになりますが、プロセスのPID識別子を確認するにはどうすればよいですか?以下にそれを共有させてください

Linux および BSD の代替 Redox OS が、COSMIC デスクトップ アプリケーションと複数の最適化を備えたバージョン 0.9.0 に到達 Linux および BSD の代替 Redox OS が、COSMIC デスクトップ アプリケーションと複数の最適化を備えたバージョン 0.9.0 に到達 Sep 12, 2024 pm 12:18 PM

2015 年 4 月 20 日、Redox OS は「安全性、自由、信頼性、正確性、実用主義に重点を置いた」新しいマイクロカーネル オペレーティング システムとして登場しました。 Rust とアセンブリ言語で書かれたこのプロジェクトは、次のようなコード部分からインスピレーションを受けました。

PHP PCNTL でのフォーク失敗の一般的なエラーと解決策 PHP PCNTL でのフォーク失敗の一般的なエラーと解決策 Feb 28, 2024 am 11:06 AM

PHPCNTL でのフォーク失敗の一般的なエラーと解決策 プロセス管理に PHPCNTL 拡張機能を使用すると、フォーク失敗の問題が頻繁に発生します。 forkとは子プロセスを作成する方法ですが、場合によっては何らかのエラーによりfork操作が失敗することがあります。この記事では、いくつかの一般的なフォーク失敗エラーとそれに対応する解決策を紹介し、読者がこれらの問題をよりよく理解して対処できるように具体的なコード例を示します。 1. メモリ不足に関する考えられるエラー メッセージ: 可能

PHP 致命的エラーの解決策: キャッチされない例外「PDOException」 PHP 致命的エラーの解決策: キャッチされない例外「PDOException」 Jun 23, 2023 pm 12:09 PM

PHP の開発では、PHP がデータベースを操作する際のエラーによって発生する「PHPFatalerror:UncaughtException'PDOException'」などのエラーが発生することがあります。このエラーが時間内に処理されないと、プログラムが中断されたり、予期しないエラーが発生したりすることがあります。では、この問題をどうやって解決すればいいのでしょうか?一般的な解決策をいくつか示します。 1. データベースパラメータを確認する まず、データベースに接続するときに渡されるパラメータを確認する必要があります。

Java で UnsupportedEncodingException に対処するにはどうすればよいですか? Java で UnsupportedEncodingException に対処するにはどうすればよいですか? Jun 25, 2023 am 08:02 AM

Java で UnsupportedEncodingException に対処するにはどうすればよいですか? Java プログラミングでは、UnsupportedEncodingException が発生する場合があります。この例外は通常、間違ったエンコード変換またはサポートされていないエンコードによって発生します。この記事では、UnsupportedEncodingException例外の原因と対処法を紹介します。サポート対象外とは何ですか?

PHP PCNTL拡張フォーク機能が失敗する原因の分析 PHP PCNTL拡張フォーク機能が失敗する原因の分析 Feb 28, 2024 pm 09:42 PM

PHPCNTL 拡張フォーク関数の失敗原因の分析 PHP では、PCNTL 拡張機能はプロセス制御を処理するための一連の関数を提供します。フォーク関数はその中で一般的に使用される関数の 1 つです。 fork 関数を使用すると、特定のタスクを実行する子プロセスを作成できます。これは、同時ハンドラーを作成するときに非常に便利です。ただし、PCNTL の拡張フォーク機能を使用すると、フォークが失敗する場合があるため、この記事ではその原因を分析し、具体的なコードを示します。

See all articles