文档章节

Linux下实现PHP多进程

mickelfeng
 mickelfeng
发布于 2013/01/03 00:41
字数 428
阅读 11
收藏 0

多进程:使用PHP的Process Control Functions(PCNTL/线程控制函数)
函数参考可见:http://www.php.net/manual/zh/ref.pcntl.php
只能用在Unix Like OS,Windows不可用。
编译php的时候,需要加上–enable-pcntl,且推荐仅仅在CLI模式运行,不要在WEB服务器环境运行。

以下为简短的测试代码:

<?php
declare(ticks=1);
$bWaitFlag= FALSE;/// 是否等待进程结束
$intNum= 10;          /// 进程总数
$pids=array();       ///  进程PID数组

echo("Start\n");

for($i= 0;$i<$intNum;$i++) {

  $pids[$i] = pcntl_fork();/// 产生子进程,而且从当前行之下开试运行代码,而且不继承父进程的数据信息

  if(!$pids[$i]) {
    // 子进程进程代码段_Start
    $str="";
    sleep(5+$i);
    for($j=0;$j<$i;$j++) {$str.="*";}
    echo"$i -> ". time() ." $str \n";
    exit();
    // 子进程进程代码段_End
  }

}
if($bWaitFlag)
{
  for($i= 0;$i<$intNum;$i++) {
    pcntl_waitpid($pids[$i],$status, WUNTRACED);
    echo"wait $i -> ". time() ."\n";
  }
}
echo("End\n");
?>

结果:

$ /Applications/XAMPP/bin/php http_fork.php 
Start
End
putclubde:workerman_mickelfeng putclub$ ps -ef |grep php
  501  1472     1   0  9:35下午 ttys001    0:00.00 /Applications/XAMPP/bin/php http_fork.php
  501  1473     1   0  9:35下午 ttys001    0:00.00 /Applications/XAMPP/bin/php http_fork.php
  501  1474     1   0  9:35下午 ttys001    0:00.00 /Applications/XAMPP/bin/php http_fork.php
  501  1475     1   0  9:35下午 ttys001    0:00.00 /Applications/XAMPP/bin/php http_fork.php
  501  1476     1   0  9:35下午 ttys001    0:00.00 /Applications/XAMPP/bin/php http_fork.php
  501  1477     1   0  9:35下午 ttys001    0:00.00 /Applications/XAMPP/bin/php http_fork.php
  501  1478     1   0  9:35下午 ttys001    0:00.00 /Applications/XAMPP/bin/php http_fork.php
  501  1479     1   0  9:35下午 ttys001    0:00.00 /Applications/XAMPP/bin/php http_fork.php
  501  1480     1   0  9:35下午 ttys001    0:00.00 /Applications/XAMPP/bin/php http_fork.php
  501  1481     1   0  9:35下午 ttys001    0:00.00 /Applications/XAMPP/bin/php http_fork.php
  501  1483   298   0  9:35下午 ttys001    0:00.00 grep php
$ 0 ->1525786523  
1 ->1525786524 * 
2 ->1525786525 ** 
3 ->1525786526 *** 
4 ->1525786527 **** 
$ 5 ->1525786528 ***** 
6 ->1525786529 ****** 
7 ->1525786530 ******* 
8 ->1525786531 ******** 
9 ->1525786532 ********* 

 

 

本文转载自:

共有 人打赏支持
mickelfeng

mickelfeng

粉丝 227
博文 2634
码字总数 568692
作品 0
成都
高级程序员
PHP多进程开发与Redis结合实践

业务逻辑介绍: 用户在 APP 上发帖子,然后存储到 Redis 的 List 列表中 利用 Linux 的 crontab 定时任务功能,按秒请求执行PHP脚本文件(processNewsRedisList.php) 调用 redis_process 处理...

老K8
06/21
0
0
PHP Socket 编程进阶指南

学习准备 Linux 或者 Mac 环境; 安装有 Sockets 扩展; 了解 TCP/IP 协议。 socket函数只是PHP扩展的一部分,编译PHP时必须在配置中添加 配置项来启用。 如果自带的PHP没有编译scokets扩展,...

飞鸿影~
07/11
0
0
PHP 的异步并行和协程 C 扩展 - Swoole

PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器...

matyhtf
2014/03/03
0
12
Websocket和PHP Socket编程

谈谈php中使用websocket-实例 http://blog.csdn.net/xueling022/article/details/52902358 本来是搜一些html5 websocket资料看的,结果被引去看了php的socket编程。下面是一些简单的例子,在...

mickelfeng
2014/10/28
0
2
《Linux内核设计与实现》读书笔记 - 目录 (完结)

《Linux内核设计与实现》读书笔记 - 目录 (完结) 读完这本书回过头才发现, 第一篇笔记居然是 2012年8月发的, 将近一年半的时间才看完这本书(汗!!!). 为了方便以后查看, 做个《Linux内核设计...

你的猫大哥
01/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

创建第一个react项目

sudo npm i -g create-react-app@1.5.2 create-react-app react-app cd react-apprm -rf package-lock.jsonrm -rf node_modules #主要是为了避免报错npm installnpm start......

lilugirl
今天
1
0
在浏览器中进行深度学习:TensorFlow.js (八)生成对抗网络 (GAN)

Generative Adversarial Network 是深度学习中非常有趣的一种方法。GAN最早源自Ian Goodfellow的这篇论文。LeCun对GAN给出了极高的评价: “There are many interesting recent development...

naughty
今天
0
0
搬瓦工镜像站bwh1.net被DNS污染,国内打不开搬瓦工官网

今天下午(2018年10月17日),继搬瓦工主域名bandwagonhost.com被污染后,这个国内的镜像地址bwh1.net也被墙了。那么目前应该怎么访问搬瓦工官网呢? 消息来源:搬瓦工优惠网->搬瓦工镜像站b...

flyzy2005
今天
6
0
SpringBoot自动配置

本篇介绍下,如何通过springboot的自动配置,将公司项目内的依赖jar,不需要扫描路径,依赖jar的情况下,就能将jar内配置了@configuration注解的类,创建到IOC里面 介绍下开发环境 JDK版本1.8 spr...

贺小五
今天
5
0
命令行新建Maven多项目

参考地址 # DgroupId 可以理解为包名# DartifactId 可以理解为项目名mvn archetype:generate -DgroupId=cn.modfun -DartifactId=scaffold -DarchetypeArtifactId=maven-archetype-quickst......

阿白
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部