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()."\n";
exit(0);//退出标志
;break;
default:
//parent父进程
echo "parent:{$i}-pid=".$pid.",进程ID=".posix_getpid().",父进程ID=".posix_getppid()."\n";
;break;
}
}

输出结果是

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

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

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

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

php 多进程的更多相关文章

  1. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  2. 取代SharedPreferences的多进程解决方案

    Android的SharedPreferences用来存储一些键值对, 但是却不支持跨进程使用. 跨进程来用的话, 当然是放在数据库更可靠啦, 本文主要是给作者的新库PreferencesProvid ...

  3. python 多进程使用总结

    python中的多进程主要使用到 multiprocessing 这个库.这个库在使用 multiprocessing.Manager().Queue时会出问题,建议大家升级到高版本python,如2 ...

  4. Nginx深入详解之多进程网络模型

    一.进程模型        Nginx之所以为广大码农喜爱,除了其高性能外,还有其优雅的系统架构.与Memcached的经典多线程模型相比,Nginx是经典的多进程模型.Nginx启动后以daemon ...

  5. Python的多线程(threading)与多进程(multiprocessing )

    进程:程序的一次执行(程序载入内存,系统分配资源运行).每个进程有自己的内存空间,数据栈等,进程之间可以进行通讯,但是不能共享信息. 线程:所有的线程运行在同一个进程中,共享相同的运行环境.每个独立的 ...

  6. 进击的Python【第十章】:Python的socket高级应用(多进程,协程与异步)

    Python的socket高级应用(多进程,协程与异步)

  7. PHP的pcntl多进程

    PHP使用PCNTL系列的函数也能做到多进程处理一个事务.比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了...所以应该使用pcntl函数了. 假 ...

  8. 初探PHP多进程

    h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h ...

  9. gdb进程调试,多进程调试

    1.单进程的调试 常规的通过gdb cmd这种方式开启调试,特别说明的是通过attach的方法附加到一个指定的进程上去进行调试,这种方法适合于调试一个已经运行的进程,具体用法:  gdb -p [pi ...

  10. python高级之多进程

    python高级之多进程 本节内容 多进程概念 Process类 进程间通讯 进程同步 进程池 1.多进程概念 multiprocessing is a package that supports s ...

随机推荐

  1. SqlServer 中 for xml path 相关

    表结构: typename varchar(50) typedesc varchar(50) 示例 SQL 语句: SELECT '{"'+TypeName, '":"' ...

  2. python 稀疏向量和矩阵的表示形式

    http://blog.csdn.net/nkwangjie/article/details/17502443 http://blog.csdn.net/bitcarmanlee/article/de ...

  3. Linux查看进程运行的完整路径方法

    通过ps及top命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等.这时,我们需要通过以下的方法来查看进程的详细信息: Linux在启动一个进程时,系统会在/proc下创建一个 ...

  4. Linux下Shell命令加减乘除计算

    使用 expr命令 (其中做乘的时候*号要用斜杠进行转义) 除以 [hadoop-user@hadoop1]$ echo `expr 9 / 3`             3加 [hadoop-use ...

  5. frambuffer 相关函数理解

    1. framebuffer_alloc()功能是向内核申请一段大小为sizeof(struct fb_info) + sizeprivate的空间,其中sizeprivate的大小代表设备的私有数据 ...

  6. 解题1(Suduku)

    题目描述 问题描述:数独(Sudoku)是一款大众喜爱的数字逻辑游戏.玩家需要根据9X9盘面上的已知数字,推算出所有剩余空格的数字,并且满足每一行.每一列.每一个粗线宫内的数字均含1-9,并且不重复. ...

  7. scrapy 琐碎的东西

    1.深度指定 DEPTH_LIMIT=1 2.常用命令 scrapy startproject name scrapy genspider name name.com scrapy crawl nam ...

  8. python--第一天总结

    [变量]1.变量定义的规则: 变量名只能是 字母.数字或下划线的任意组合    变量名的第一个字符不能是数字    以下关键字不能声明为变量名    ['and', 'as', 'assert', ' ...

  9. poj1984(带权并查集)

    题目链接:http://poj.org/problem?id=1984 题意:给定n个farm,m条边连接farm,k组询问,询问根据前t3条边求t1到t2的曼哈顿距离,若不可求则输出-1. 思路:类 ...

  10. Compare Version Numbers(STRING-TYPE CONVERTION)

    QUESTION Compare two version numbers version1 and version1.If version1 > version2 return 1, if ve ...