pcntl
<?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的更多相关文章
- PHP的pcntl多进程
PHP使用PCNTL系列的函数也能做到多进程处理一个事务.比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了...所以应该使用pcntl函数了. 假 ...
- CLI下另一种多进程实现方式----PCNTL
有些时候,你需要对一些脚本进行优化,以期跑的更快,在更短的时间内完成任务.PCNTL是一个不错的选择,它可以fork多个进程,来协同完成一个任务,理论上完成的时间将会和进程数成反比. 不过,PCNTL ...
- Linux系统中为php添加pcntl扩展的方法
1.首先看下 phpize命令 所在的目录 (ps:我的目录/usr/bin/phpize)如果没有找到的话 执行安装yum install php53_devel (ps:请注意自己的版本) 安装 ...
- 加载 pcntl 多进程
加载 pcntl 有两种方式 一种重新编译安装,在编译时加 --enable-pcntl ./configure --prefix=/usr/local/php --with-mysql=/usr/l ...
- 安装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 ...
- mac下安装pcntl
Now you need to find out what version of PHP is installed on OSX $ php -vPHP 5.3.10 with Suhosin-Pa ...
- (转载)PCNTL函数族--PHP多进程编程
(转载)http://www.cnblogs.com/zox2011/archive/2013/02/19/2917448.html php有一组进程控制函数,使得php能在*nix系统中实现跟c一样 ...
- MAMP 环境下为 php 添加 pcntl 扩展
前言: pcntl 介绍 pcntl 扩展可以支持 PHP 的多线程操作.(非Unix类系统不支持此模块) phpize 介绍 phpize 可以用来给 PHP 动态的添加扩展.比如编译 PHP 时忘 ...
- php添加pcntl扩展(Linux)
pcntl扩展可以支持php的多线程操作(仅限linux)原本需要重新编译PHP的后面configrue提示加上--enable-pcntl 由于我的php是采用yum安装的,所以不能采用上面的方式下 ...
- 安装pcntl以实现php多进程
pcntl 扩展包一般就在php源码的ext目录下. cd ./ext/pcntl /opt/server/php5/bin/phpize ./configure \ --with-php-confi ...
随机推荐
- iOS UITextField设置placeholder颜色
设置UITextField的placeholder颜色 UIColor *color = [UIColor blackColor]; textField.attributedPlaceholder = ...
- linuxan安装redis出现Newer version of jemalloc required错误
linux安装redis执行make命令时出现问题 解决方法 make MALLOC=libc 如果要指定安装文件夹 使用命令:make PREFIX = /usr/local/redis(文件夹路 ...
- 浏览器最小显示12px字体的解决方法
今天做打印标签,发现浏览器最小字体限制了12px,标签那么小,12px随便几个字就给占满了: 最后通过 transform:scale(1,0.8) 搞定: 这个属性允许将元素移动.压缩.旋转:这里 ...
- Matlab批量获取子文件夹与文件名
批量得到父文件夹下所有子文件夹的路径的MATLAB函数. function [SubFolders] = GetFolders(ParentFolder) %GetFolders % 函数功能为获取父 ...
- charles 工具菜单总结
本文参考:charles 工具菜单总结 主要是下面的功能,具体可以点击对应菜单查看 工具菜单总结 禁用缓存 禁用Cookies 远程映射到URL地址 映射到本地 重写工具 黑名单 白名单 DNS欺骗 ...
- 常见问题:计算机网络/运输层/TCP
TCP 面向连接,全双工,点对点. TCP头格式 TCP包没有IP地址,IP地址在网络层的IP协议中,TCP包包括源端口号,目标端口号 一个TCP连接需要四个元祖表明是同一连接(src_ip,src_ ...
- CenOS 7 安装Tomcat
1.首先需要安装jdk yum install java-1.8.0-openjdk-devel.x86_64 2.下载 http://mirrors.tuna.tsinghua.edu.cn/apa ...
- (生鲜项目)07. api view实现商品列表页
第一步: 环境配置 1. DRF官网: https://www.django-rest-framework.org/ 仔细查看自己当前的python版本以及django版本是否支持DRF, 然后就看看 ...
- Redis集群部署与维护
Redis集群部署与维护 目录: 一. 集群架构 二. 集群部署 1. 创建redis-cluster目录 2. 编译redis 3. 编辑redis配置文件 4. 配置redis集群 5. redi ...
- BeginLinux Programming chapter16: X11桌面系统简介
当前两个最流行的linux desktop environment: GNOME 和KDE, 两者对应的图形库分别是 GTK+ 和 QT. GNOME与KDE与X11的关系: X defines no ...