`
zhangchibang
  • 浏览: 338928 次
社区版块
存档分类
最新评论

php pcntl_fork和pcntl_fork 的用法

    博客分类:
  • PHP
阅读更多

http://www.jb51.net/article/17720.htm

 

pcntl_fork()函数就是为当前的进程创建一个子进程。并且先运行父进程,返回的是子进程的PID,肯定大于零。在父进程的代码中可以用pcntl_fork(&$status)暂停父进程知道他的子进程有返回值。注意:父进程的阻塞同时会阻塞子进程。但是父进程的结束不影响子进程的运行。 
父进程运行完了会接着运行子进程,这时子进程会从执行pcntl_fork()的那条语句开始执行(包括此函数),但是此时它返回的是零(代表这是一个子进程)。在子进程的代码块中最好有exit语句,即执行完子进程后立即就结束。否则它会又重头开始执行这个脚本的某些部分(一直没有总结出规矩)。 
总之,注意两点: 
1。子进程最好有一个exit;语句,防止不必要的出错; 

 

$pid = pcntl_fork(); 
//这里最好不要有其他的语句 
if ($pid == -1) { 
    die('could not fork'); 
} else if ($pid) { 
    // we are the parent 
    pcntl_wait($status); //Protect against Zombie children 
} else { 
    // we are the child 
} 
 
分享到:
评论

相关推荐

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

    主要介绍了PHP使用pcntl_fork实现多进程下载图片的方法,较为详细的分析了pcntl_fork的原理与用法,以及使用pcntl_fork实现多进程下载图片的方法,非常具有实用价值,需要的朋友可以参考下

    PHP多进程之pcntl_fork的实例详解

    主要介绍了PHP多进程编之pcntl_fork的实例详解的相关资料,希望通过本文能帮助到大家,让大家理解掌握这部分内容,需要的朋友可以参考下

    php中pcntl_fork创建子进程的方法实例

    一、php中pcntl_fork函数概述 pcntl_fork()函数是php中用于创建子进程的一个函数,返回创建的子进程的pid。 该函数创建子进程具体fork的过程: (1)调用该函数即创建一个子进程,创建成功父进程返回子进程的pid,...

    PHP网页在线客服系统 支持开户出租功能.zip

    pcntl_fork pcntl_signal_dispatch pcntl_wait pcntl_signal pcntl_alarm pcntl_exec 宝塔安装 Supervisor 守护进程php5.6 /www/server/php/56/bin/php start.php start /www/wwwroot/网站目录/ymwl_pusher/ ...

    php-crontab:php pcntl_fork crontab

    php-crontab 须要启用pcntl 启动方式 php cron.php 后台运行 ./corn.service.sh [start|stop|restart]

    queue:内存FIFO队列中PHP

    该库可用于pcntl_fork , worker等。用法 <?php$ q = new Grei \ Queue ( $ byte ); // default 1000000 byte$ q -> enqueue ( $ item ); // add item to queue$ q -> dequeue (); // remove one item$ q -> ...

    SimpleProcess:使用 pcntl_fork 分叉变得简单

    安装要求 PHP >= 5.3pcntl extension installed作曲家只需将以下行添加到您的"require":部分: "azielinski/simple-process": "dev-master"你不使用作曲家? 然后只需克隆 repo :) 您还必须手动include所有四个文件...

    php多进程中的阻塞与非阻塞操作实例分析

    我们通过pcntl_fork来创建子进程,使用pcntl_wait和pcntl_waitpid来回收子进程。 子进程退出后,父进程没有及时回收,就会产生僵尸进程。 例1: <?php define('FORK_NUMS', 5); $pids = array(); //我们创建5...

    PHP的pcntl多进程用法实例

    主要介绍了PHP的pcntl多进程用法,实例分析了pcntl操作多进程的使用技巧,非常具有实用价值,需要的朋友可以参考下

    PHP多进程编程之僵尸进程问题的理解

    使用pcntl_fork函数可以让PHP实现多进程并发或者异步处理的效果:https://www.jb51.net/article/125789.htm 那么问题是我们产生的进程需要去控制,而不能置之不理。最基本的方式就是fork进程和杀死进程。 通过利用...

    学习swoole之所锁机制

    使用VMware软件安装Centos7 安装php7 和swoole扩展 lock();//开始锁定主进程 /** * pcntl_fork()函数执行的时候,会创建一个子进程。子进程会复制当前进程,也就是父进程的所有:数据,代码,还有状态。 *当pcntl_...

    php 的多进程操作实践案例分析

    php的多进程处理依赖于pcntl扩展,通过pcntl_fork创建子进程来进行并行处理。 例1如下: <?php $pid = pcntl_fork(); if($pid == -1) { //错误处理:创建子进程失败时返回-1. die('fork error'); } else if ($...

    PHP多进程编程实例详解

    $ php -m 命令查看php是否安装pcntl 和 posix扩展,若没有则安装 使用场景: 1. 要进行大量的网络耗时的操作 2. 要做大量的运算,并且,系统有多个cpu,为了让用户有更快的体验,把一个任务,分成几个小任务,最后...

    PHP多进程简单实例小结

    php官网介绍http://php.net/manual/zh/book.pcntl.php,创建子进程需要使用到pcntl_fork(),文档上介绍该函数说 ,pcntl_fork — 在当前进程当前位置产生分支(子进程)。 译注:fork是创建了一个子进程,父进程和子...

    PHP 使用pcntl和libevent 实现Timer功能

    PHP 使用pcntl和libevent 实现Timer功能,先看例子,pcntl(PHP线程)解释在下面。复制代码 代码如下:<?php function newChild($func_name) { echo “enter newChild\n”; $args = func_get_args(); unset($...

Global site tag (gtag.js) - Google Analytics