<?php

function my_pcntl_wait($childProcessCode){

    $pid = pcntl_fork();
if($pid>0){
pcntl_wait($status);
}elseif($pid==0){
eval($childProcessCode);
var_dump("开启子进程".posix_getpid());
exit;
}else{
die('Cannot fork.');
}
}
function test($i)
{
var_dump("第".$i."页 执行成功 ");
} for($i=0;$i<100;$i++){
my_pcntl_wait("test($i);");
}

  

<?php

//定义进程数量
define('FORK_NUMS', 5); //用于保存进程pid
$pids = array(); //我们创建5个子进程
for ($i = 0; $i < FORK_NUMS; ++$i) {
$pids[$i] = pcntl_fork();
if ($pids[$i] == -1) {
die('fork error');
} else if ($pids[$i]) {
//这里是父进程空间,也就是主进程
//我们的for循环第一次进入到这里时,pcntl_wait会挂起当前主进程,等待第一个子进程执行完毕退出
//注意for循环的代码是在主进程的,挂起主进程,相当于当前的for循环也阻塞在这里了
//第一个子进程退出后,然后再创建第二个子进程,到这里后又挂起,等待第二个子进程退出,继续创建第三个,等等。。
pcntl_wait($status);
} else {
//这里是子进程空间
echo "父进程ID: ", posix_getppid(), " 进程ID : ", posix_getpid(), " {$i} \r\n";
//我们让子进程等待3秒,再退出
sleep(3);
exit;
}
}

  

function my_pcntl_wait($childProcessCode){

    $pid = pcntl_fork();
if($pid>0){
$res = pcntl_wait($status);
var_dump("进程".$res."结束"); }elseif($pid==0){
var_dump("开启子进程".posix_getpid()." 父进程:".posix_getppid());
eval($childProcessCode); exit;
}else{
die('Cannot fork.');
}
}
function test($i,$name)
{
var_dump("第".$i ."页 -".$name." 执行成功 ");
} for($i=0;$i<5;$i++){
$name = 'brady';
$exec = "test('".$i."','".$name."');";
my_pcntl_wait($exec);
}

  

 

pcntl的更多相关文章

  1. PHP的pcntl多进程

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

  2. CLI下另一种多进程实现方式----PCNTL

    有些时候,你需要对一些脚本进行优化,以期跑的更快,在更短的时间内完成任务.PCNTL是一个不错的选择,它可以fork多个进程,来协同完成一个任务,理论上完成的时间将会和进程数成反比. 不过,PCNTL ...

  3. Linux系统中为php添加pcntl扩展的方法

    1.首先看下 phpize命令 所在的目录  (ps:我的目录/usr/bin/phpize)如果没有找到的话 执行安装yum install php53_devel (ps:请注意自己的版本) 安装 ...

  4. 加载 pcntl 多进程

    加载 pcntl 有两种方式 一种重新编译安装,在编译时加 --enable-pcntl ./configure --prefix=/usr/local/php --with-mysql=/usr/l ...

  5. 安装pdo.so和pdo_mysql.so还有pcntl.so扩展到php中

    1.下载源码,解压tar -xzvf php-5.4.20.tar.gz cd  /usr/local/src/php-5.4.20/ext/pdo /usr/local/php/bin/phpize ...

  6. mac下安装pcntl

     Now you need to find out what version of PHP is installed on OSX $ php -vPHP 5.3.10 with Suhosin-Pa ...

  7. (转载)PCNTL函数族--PHP多进程编程

    (转载)http://www.cnblogs.com/zox2011/archive/2013/02/19/2917448.html php有一组进程控制函数,使得php能在*nix系统中实现跟c一样 ...

  8. MAMP 环境下为 php 添加 pcntl 扩展

    前言: pcntl 介绍 pcntl 扩展可以支持 PHP 的多线程操作.(非Unix类系统不支持此模块) phpize 介绍 phpize 可以用来给 PHP 动态的添加扩展.比如编译 PHP 时忘 ...

  9. php添加pcntl扩展(Linux)

    pcntl扩展可以支持php的多线程操作(仅限linux)原本需要重新编译PHP的后面configrue提示加上--enable-pcntl 由于我的php是采用yum安装的,所以不能采用上面的方式下 ...

  10. 安装pcntl以实现php多进程

    pcntl 扩展包一般就在php源码的ext目录下. cd ./ext/pcntl /opt/server/php5/bin/phpize ./configure \ --with-php-confi ...

随机推荐

  1. LeetCode_110. Balanced Binary Tree

    110. Balanced Binary Tree Easy Given a binary tree, determine if it is height-balanced. For this pro ...

  2. JS时间转换,url编码,jquery返回类型等问题

    1.当时间被转换为json格式后会被转换成 /Date(...)/ 这种格式,其中...为时间转换成妙后的一串整数 function changeDateFormat(cellval) { )); v ...

  3. 【计算机视觉】detection/region/object proposal 方法综述文章

    目录(?)[-] Papers 大纲 各种OP方法的回顾 Grouping proposal methods Window scoring proposal methods Aliternate pr ...

  4. location匹配禁止页面缓存

    php禁止页面缓存的办法 //设置此页面的过期时间(用格林威治时间表示),只要是已经过去的日期即可. add_header Expires: Mon, 26 Jul 1997 05:00:00 GMT ...

  5. Django项目-简易博客系统(附源码) --Python Web

    Django入门级项目: 链接:https://pan.baidu.com/s/13Z7v-gky6Xgka-Gom8-HQQ 提取码:uagu

  6. Redis部分

  7. Java基础---JavaJShell脚本工具

    JShell脚本工具是JDK9的新特性 什么时候会用到 JShell 工具呢,当我们编写的代码非常少的时候,而又不愿意编写类,main方法,也不愿意去编译和运行,这个时候可以使用JShell工具. 启 ...

  8. 通过JAX-WS实现WebService

    (一)服务端的创建 一,首先创建一个Web 项目,或者创建一个Web Service项目也行(差别就是后者在开始就设置了Web Service的调用方式) 二,在项目中创建一个类作为我们要发布的服务( ...

  9. Qt程序开机自动运行

    一.写入注册表需要管理员权限 1.开发中生成并运行程序需要写入注册表时,应该以管理员权限打开项目: 2.点击程序运行需要写入注册表,则应该以管理员权限打开此程序. 二.实现 void MoreSetW ...

  10. Vue 组件系统

    vue.js既然是框架,那就不能只是简单的完成数据模板引擎的任务,它还提供了页面布局的功能.本文详细介绍使用vue.js进行页面布局的强大工具,vue.js组件系统. 每一个新技术的诞生,都是为了解决 ...