PHP实现的多进程控制demo示例

本文实例讲述了PHP实现的多进程控制。分享给大家供大家参考,具体如下:

自己写了个多进程控制的框架代码,留着备查

declare(ticks=1);
function sigHandler($signal)
{
  echo "a child exited\n";
}
pcntl_signal(SIGCHLD, sigHandler, false);
echo "this is " . posix_getpid() . PHP_EOL;
for($i=0; $i<3; $i++)
{
  $pid = pcntl_fork();
  if($pid == -1)
  {
    echo 'fork failed ' . PHP_EOL;
  }
  else if($pid)
  {
  }
  else
  {
    $pid = posix_getpid();
    echo 'child ' . $pid . ' ' . time() . PHP_EOL;
    sleep(rand(2,5));
    echo 'child ' . $pid . ' done ' . time() . PHP_EOL;
    exit(0);
  }
}
do
{
  $pid = pcntl_wait($status);
  echo 'child quit ' . $pid . PHP_EOL;
}while($pid > 0);
echo 'parent done' . PHP_EOL;

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • 以实例全面讲解PHP中多进程编程的相关函数的使用

    PHP有一组进程控制函数(编译时需要–enable-pcntl与posix扩展),使得php能实现跟c一样的创建子进程.使用exec函数执行程序.处理信号等功能. <?php header('content-type:text/html;charset=utf-8' ); // 必须加载扩展 if (!function_exists("pcntl_fork")) { die("pcntl extention is must !"); } //总进程的数量 $t

  • PHP的pcntl多进程用法实例

    本文实例讲述了PHP的pcntl多进程用法.分享给大家供大家参考.具体分析如下: PHP使用PCNTL系列的函数也能做到多进程处理一个事务.比如我需要从数据库中获取80w条的数据,再做一系列后续的处理,这个时候,用单进程?你可以等到明年今天了.所以应该使用pcntl函数了. 假设我想要启动20个进程,将1-80w的数据分成20份来做,主进程等待所有子进程都结束了才退出: $max = 800000; $workers = 20; $pids = array(); for($i = 0; $i <

  • PHP使用pcntl_fork实现多进程下载图片的方法

    本文实例讲述了PHP使用pcntl_fork实现多进程下载图片的方法.分享给大家供大家参考.具体分析如下: PHP pcntl_fork - 在当前进程当前位置产生分支,子进程,译注:fork是创建了一个子进程,父进程和子进程 都从fork的位置开始向下继续执行,不同的是父进程执行过程中,得到的fork返回值为子进程号,而子进程得到的是0. 注意:PHP有个pcntl_fork的函数可以实现多进程,但要加载pcntl拓展,而且只有在linux下才能编译这个拓展. 1.首先在ubuntu下编译pc

  • 深入探究PHP的多进程编程方法

    子进程的创建 一般的子进程的写法是: <?php $pid = pcntl_fork(); if($pid == -1){ //创建失败 die('could not fork'); } else{ if($pid){ //从这里开始写的代码是父进程的 exit("parent!"); } else{ //子进程代码,为防止不停的启用子进程造成系统资源被耗尽的情况,一般子进程代码运行完成后,加入exit来确保子进程正常退出. exit("child"); }

  • Linux下实现PHP多进程的方法分享

    PHP多进程:使用PHP的Process Control Functions(PCNTL/线程控制函数) 函数参考可见:http://www.php.net/manual/zh/ref.pcntl.php 只能用在Unix Like OS,Windows不可用. 编译php的时候,需要加上–enable-pcntl,且推荐仅仅在CLI模式运行,不要在WEB服务器环境运行. 以下为实现PHP多进程的简单测试代码: 复制代码 代码如下: <?php declare(ticks=1); $bWaitF

  • PHP多进程编程实例

    羡慕火影忍者里鸣人的影分身么?没错,PHP程序是可以开动影分身的!想完成任务,又觉得一个进程太慢,那么,试试用多进程来搞吧.这篇文章将会介绍一下PHP多进程的基本需求,如何创建多进程以及基本的信号控制,暂时不会告诉你如何进行进程间通信和信息共享. 1. 准备 在动手之前,请确定你用的不是M$ Windows平台(因为我没有Windows).Linux / BSD / Unix应该都是没问题的.确认好了工作环境以后一起来看看我们需要的PHP模块是否都有.打开终端输入下面的命令: 复制代码 代码如下

  • php开启多进程的方法

    本文实例讲述了php开启多进程的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: <?php  $IP='192.168.1.1';//Windows電腦的IP  $Port='5900';        //VNC使用的Port  $ServerPort='9999';//Linux Server對外使用的Port  $RemoteSocket=false;//連線到VNC的Socket  function SignalFunction($Signal){   //這是主P

  • php中实现进程锁与多进程的方法

    为什么需要进程锁? 主要作用就是防止你重复执行同一程序,主要用在crontab中,当你设置了一个定时任务,然后每分钟执行一次,如果不加进程锁的话,之前的进程没有执行完的情况下.每分钟都会有新的进程生成了.加上进程锁之后,每次定时任务执行的时候,就会去判断之前的进程锁是否存在,如果存在就不执行. 1.单进程的情况的进程锁实现 直接来个例子好了,写个php脚本, 就先命名为process.php吧,代码如下: <?php $lock_file = dirname(__FILE__) . "/p

  • 深入解析PHP中的(伪)多线程与多进程

    (伪)多线程:借助外力利用WEB服务器本身的多线程来处理,从WEB服务器多次调用我们需要实现多线程的程序.QUOTE:我们知道PHP本身是不支持多线程的, 但是我们的WEB服务器是支持多线程的.也就是说可以同时让多人一起访问. 这也是我在PHP中实现多线程的基础.假设我们现在运行的是a.php这个文件. 但是我在程序中又请求WEB服务器运行另一个b.php那么这两个文件将是同时执行的.(PS: 一个链接请求发送之后, WEB服务器就会执行它, 而不管客户端是否已经退出)有些时候, 我们想运行的不

  • PHP多进程之pcntl_fork的实例详解

    PHP多进程编之pcntl_fork的实例详解 其实PHP是支持并发的,只是平时很少使用而已.平时使用最多的应该是使用PHP-FMP调度php进程了吧. 但是,PHP的使用并不局限于做Web,我们完全也可以使用PHP来进行系统工具类的编程,做监控或者是运维.在使用这些方向的时候,我们可以使用到PHP的更多特性,例如并发(多进程).socket编程等. 那么接下来就说说我遇到的PHP多进程的编程.这个多进程的使用是有一个背景的,下面模糊描述一下背景. 我需要一个监控系统,当然使用PHP语言,监控系

  • PHP CLI模式下的多进程应用分析

    PHP在很多时候不适合做常驻的SHELL进程, 他没有专门的gc例程, 也没有有效的内存管理途径. 所以如果用PHP做常驻SHELL, 你会经常被内存耗尽导致abort而unhappy. 而且, 如果输入数据非法, 而脚本没有检测, 导致abort, 也会让你很不开心. 那? 怎么办呢? 多进程-. 为什么呢? 优点: 1. 使用多进程, 子进程结束以后, 内核会负责回收资源 2. 使用多进程,子进程异常退出不会导致整个进程Thread退出. 父进程还有机会重建流程. 3. 一个常驻主进程, 只

随机推荐