ホームページ  >  記事  >  バックエンド開発  >  phpはマルチプロセスですか?

phpはマルチプロセスですか?

(*-*)浩
(*-*)浩オリジナル
2019-09-29 10:20:122428ブラウズ

サーバー上でスクリプトを実行する場合、時間のかかるタスクが避けられず、複数のプロセスを使用することが不可欠です。 PHP5.5 以降、PHP は開発ニーズを満たすためにマルチプロセス要素を追加し始めました。

phpはマルチプロセスですか?

#注意

複数のプロセスを実装するには有効にする必要がある拡張機能: pcntl、ポジックス。 (推奨学習: PHP ビデオ チュートリアル )

PHP のマルチプロセス プログラミングは Windows 環境ではサポートされていません。この記事は主に Linux 環境で開発およびテストされています

簡単な構造図

phpはマルチプロセスですか?

##主な機能

##pcntl_fork: 複数のプロセスを作成します。2 つの項目は呼び出し後に返されるプロセスの pid、0 は子プロセス、0 より大きいは親プロセス (親プロセスは子プロセスの ID を取得するため、0 より大きい)、-1 は作成が失敗したことを意味します

$pid = $pcntlInstall ? pcntl_fork() : 0;if ($pid == -1) {
    //fork失败
 } elseif ($pid > 0) {
    //父进程
    ......
 } elseif ($pid == 0) {
    //子进程
    ......
 }

pcntl_signal: 信号処理コールバック関数を登録します。子プロセスの終了時に送信される信号をキャプチャできます。##
/配合pcntl_signal使用
declare (ticks = 1);

//当子进程退出时,会触发该函数,当前子进程数-1
pcntl_signal(SIGCHLD, function ($signo) {
    switch ($signo) {
        case SIGCHLD:
            echo $curChildPro . 'SIGCHLD', PHP_EOL;
            $curChildPro--;
            break;
    }
});

pcntl_wait: 親プロセスを一時停止し、子プロセスが終了するのを待つために使用されます

以上がphpはマルチプロセスですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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