画江湖之 PHP 多进程开发 [创建一个新的进程]

核心函数

概括:

函数
pcntl_fork  创建新进程
pcntl_waitpid  等待或返回fork的子进程状态
posix_getpid   返回当前进程 id
posix_getppid 取得父进程 id

注意
pcntl_fork 调用一次,返回两个值;子进程得到的是0,父进程得到的子进程 id

代码段

<?php

echo "Master process id = " . posix_getpid() . PHP_EOL;

$pid = pcntl_fork();//创建一个新的进程

switch ($pid) {
case -1://如果为-1就代表失败
    die('Create failed');
    break;
case 0://如果是0 就代表是子进程
    // Child
    echo "Child process id = " . posix_getpid() . PHP_EOL;//输出子进程的进程id
    sleep(2);
    echo "I will exit\n";
    break;
default:
    // Parent

    if ($exit_id = pcntl_waitpid($pid, $status, WUNTRACED)) {//为了防止主进程挂了 子进程变成孤儿进程 所以在等待子进程执行完成以后
        echo "Child({$exit_id}) exited\n";
    }
    echo "Parent process id = " . posix_getpid() . PHP_EOL;
    break;
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!