PHP マルチプロセス プログラムを記述することは、実際には、いくつかのステップを踏むだけで、象を冷蔵庫に入れるのと同じくらい簡単です。
PHP は、3 つの簡単な手順でマルチプロセスを実装します。サブプロセスの作成、サブプロセスの管理、サブプロセスの処理。 簡単そうに聞こえますが、多くの知識が必要です。たとえば、各プロセスにはプロセス番号 (pid) があること、またコマンド ラインが php ファイルを実行する方法を知る必要があります。 (推奨学習: PHP ビデオ チュートリアル )
php マルチプロセスには、pcntl および posix 拡張機能のサポートが必要です。これは、php -m で表示できます。
子プロセスを作成する最初のステップでは、pcntl_fork() 関数が使用されます。関数の戻り値は通常 0 で、失敗した場合は -1 が返されます。まず、子プロセスを作成する直感的な例を示します。
$ppid = posix_getpid(); $pid = pcntl_fork(); if ($pid == -1) { throw new Exception('fork子进程失败!'); } elseif ($pid > 0) { cli_set_process_title("我是父进程,我的进程id是{$ppid}."); sleep(30); // 保持30秒,确保能被ps查到 } else { $cpid = posix_getpid(); cli_set_process_title("我是{$ppid}的子进程,我的进程id是{$cpid}."); sleep(30); }
子プロセスを管理する 2 番目のステップでは、シグナルを使用します。簡単に言うと、親プロセスは 2 つの関数 pcntl_signal() と pcntl_signal_dispatch を使用します。これらの関数は、シグナル プロセッサのインストールと子プロセスへの作業の分配を担当します。このステップにはコールバック関数の概念が含まれるため、最初に簡単に紹介します。将来的には、より包括的な内容を追加する予定です。
子プロセスを処理する 3 番目のステップにも 2 つの関数が必要です。 1 つは終了シグナルを送信する posix_kill() 関数であり、もう 1 つは子プロセスの状態を待つ pcntl_waitpid() 関数であり、子プロセスとともにタスクを完了するという目的を達成できます。
バックエンド開発はこんな感じで、複雑そうに思っていることも実はとてもわかりやすい手順で、基本的には多くの知識が必要ですが、機能はそれほど多くありません。したがって、始めたら、とにかく噛み砕いて学び、いつかはっきりと理解できるようになると信じてください。
以上がPHPはシングルプロセスですか、それともマルチプロセスですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。