zoukankan      html  css  js  c++  java
  • php 多进程

    php 在使用场景中一般是处理web应用,所以多进程使用不适合在web中使用,且php-fpm中pcntl_fork不能使用,所以使用场景是在cgi模式下

    一个进程调用pcntl_fork函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。pcntl_fork会创建出一个父进程和子进程

    <?php
    if (!function_exists('pcntl_fork')) {
        die("pcntl_fork not existing");
    }
    define('PC',2);
    for ($i = 0; $i < PC; ++$i ) {
        $pid = pcntl_fork(); // 创建子进程

      switch($pid){ case -1: die("could not fork"); ;break; case 0: //child子进程 echo "child:{$i}-pid=".$pid.",进程ID=".posix_getpid().",父进程ID=".posix_getppid()." "; exit(0);//退出标志 ;break; default: //parent父进程 echo "parent:{$i}-pid=".$pid.",进程ID=".posix_getpid().",父进程ID=".posix_getppid()." "; ;break; } }

    输出结果是

    34377这个进程ID是bash的进程ID

    也就是 bash->主进程35054fork出2个父进程(35055,35056)同时创建了其子进程,此类我查看c的fork函数子进程创建数目有差异,由于c的代码笔者不是很熟悉所以这里带过,也就是说pctnl_for可以PC定义创建的子进程数目。

    这个只是简单的原理,具体需要使用的时候还要做防止僵尸进程的产生

    转:http://blog.csdn.net/u014511737/article/details/47003885(这篇文章里面有一个实例)

  • 相关阅读:
    Wannafly挑战赛21A
    luoguP4000 斐波那契数列
    关于斐波那契数模意义下的循环节问题
    Codeforces Round #501 (Div. 3) F. Bracket Substring
    1257: [CQOI2007]余数之和
    51nod1380 夹克老爷的逢三抽一
    51nod1423 最大二"货" 单调栈
    51nod1624 取余最长路 前缀和 + set
    51nod1437 迈克步 单调栈
    51nod1515 明辨是非 并查集 + set
  • 原文地址:https://www.cnblogs.com/gavinjunftd/p/7224508.html
Copyright © 2011-2022 走看看