ホームページ  >  記事  >  バックエンド開発  >  PHPは複数のプロセスをサポートしていますか?

PHPは複数のプロセスをサポートしていますか?

(*-*)浩
(*-*)浩オリジナル
2019-09-05 09:18:002635ブラウズ

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

PHPは複数のプロセスをサポートしていますか?

#注意

複数のプロセスを実装するには有効にする必要がある拡張機能: pcntl、ポジックス。

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 までご連絡ください。