1,php多进程并行操作实例

复制代码 代码示例:

//多进程并行操作

/**

* 入口函数

* 将此文件保存为 ProcessOpera.php

* 在terminal中运行 /usr/local/php/bin/php ProcessOpera.php &

* 查看进程 ps aux|grep php

* edit www.jbxue.com

*/

ProcessOpera("runCode", array(), 8);

/**

* run Code

*/

function runCode($opt = array()) {

//需要在守护进程中运行的代码

}

/**

* $func为子进程执行具体事物的函数名称

* $opt为$func的参数 数组形式

* $pNum 为fork的子进程数量

*/

function ProcessOpera($func, $opts = array(), $pNum = 1) {

while(true) {

$pid = pcntl_fork();

if($pid == -1) {

exit("pid fork error");

}

if($pid) {

static $execute = 0;

$execute++;

if($execute >= $pNum) {

pcntl_wait($status);

$execute--;

}

} else {

while(true) {

//somecode

$func($opts);

sleep(1);

}

exit(0);

}

}

}

?>

2,Linux下PHP多进程的方法分享

PHP多进程:使用PHP的Process Control Functions(PCNTL/线程控制函数)

函数参考:http://www.jbxue.com/shouce/php5/book.pcntl.html

只能用在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

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");

?>

3,PHP多进程并行执行脚本

php的进程不支持多线程,有些场景为了方便以及提高性能,可以用php实现多进程。

例如:

复制代码 代码示例:

#!/usr/bin/env php

$cmds=array(

array('/apps/bin/launcher.php','charge/promotion_props_stat.php','mobile',1),

array('/apps/bin/launcher.php','charge/promotion_props_stat.php','mobile',2),

array('/apps/bin/launcher.php','charge/promotion_props_stat.php','click',1),

array('/apps/bin/launcher.php','charge/promotion_props_stat.php','click',2),

array('/apps/bin/launcher.php','charge/promotion_props_stat.php',1),

array('/apps/bin/launcher.php','charge/promotion_props_stat.php',2)

);

foreach($cmds as $cmd){

$pid=pcntl_fork();

if($pid==-1){ //进程创建失败

die('fork child process failure!');

}

else if($pid){ //父进程处理逻辑

pcntl_wait($status,WNOHANG);

}

else{ //子进程处理逻辑

pcntl_exec('/usr/local/bin/php',$cmd);

}

}

?>

有关php多进程的例子,就介绍这三个了,希望对大家有所帮助。

php 多进程设置,php多进程操作的三个实例相关推荐

  1. python多进程原理_python多进程的详细介绍(附示例)

    本篇文章给大家带来的内容是关于PHP中的SAPI是什么?如何实现?(图文),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 进程 Python是运行在解释器中的语言,查找资料知道,py ...

  2. Qt数据库操作(三) -- 使用SQL模型类

    文章目录 Qt数据库操作(三) -- 使用SQL模型类 1.SQL查询模型 2.SQL表格模型 3.关系表格模型 Qt数据库操作(三) – 使用SQL模型类 Qt 提供了3个高级的类来访问数据库,分别 ...

  3. shell模拟php多进程从redis获取数据(多个redis实例)

    背景:现在的数据已经写到了redis队列里面,完成了入栈的操作,后期打算从redis获取数据,完成出栈的操作,出栈后然后做一系列的逻辑处理 环境: VMware虚拟机  内存:1G   硬盘:60G  ...

  4. 最近总结了串口(COM)读写操作的三种方式

    最近总结了串口(COM)读写操作的三种方式: 第1种方式是采用微软在.NET2.0推出了一个串口控件,SerialPort类,但必须是.NET2.0才可以 第2种方式是用API写串口通信,虽然难度高, ...

  5. pandas dataframe 使用多进程apply(原生、pandarallel多进程、swifter多进程)

    文章目录 标准单进程apply 使用parallel_apply多进程 使用swifter多进程(推荐) 完整代码 参考文章 首先生成数据 def get_data(): # 获得数据源import ...

  6. oracle级联怎么设置,Oracle级联操作详解

    Oracle外键级联删除和级联更新 1 级联删除 在添加foreing key约束时,还可以指定级联操作的类型,主要用于确定当删除(on delete) 附表中的一条记录时,如何处理子表中的外键字段, ...

  7. linux设置开机自启服务,linux设置服务开机自启动的三种方式

    linux设置服务开机自启动的三种方式 这里介绍一下linux开机自动启动的几种方法,共计3种,大家可以借鉴一下!经验里面以centos 5.3系统为例! 方法1:.利用ntsysv命令进行设置,利用 ...

  8. Java操作Excel三种方式POI、Hutool、EasyExcel

    Java操作Excel三种方式POI.Hutool.EasyExcel 1. Java操作Excel概述 1.1 Excel需求概述 1.2 Excel操作三种方式对比 2. ApachePOIExc ...

  9. 交换机的相关配置---设置终端登录密码和恢复出厂设置的实验操作

    交换机的相关配置-设置终端登录密码和恢复出厂设置的实验操作 实验操作要求: 1.为交换机lsw1设置终端登录密码Taren1,退出终端重进以验证登录效果 2.恢复出厂设置,重新进入后观察设备名变化 具 ...

最新文章

  1. 连接Oracle错误:800a0e7a未找到提供程序的解决
  2. Centos7+Mysql5.7实现主从复制
  3. 「BATJ面试系列」并发编程
  4. Could NOT find SDL_image (missing:SDL_IMAGE_LIBRARIES SDL_IMAGE_INCLUDE_DIRS)
  5. 一个基于.Net 5开发的轻量级Quartz配置中心 - QuartzCore.Blazor
  6. org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyR
  7. Docker快速搭建TeamSpeak多人语音聊天服务器
  8. 利用汇编挖掘编程语言的本质
  9. php数组和列表,【PHP基础】1.1 所有数组函数分类与列表(目前可能不全)
  10. android token机制_Android之window机制token验证
  11. Linux Netcat command – The swiss army knife of net
  12. 比Spark更适合工业互联网的数据库——热门时序数据库介绍与核心文档汇总【施工中,欢迎留言加入】
  13. 做自媒体赚钱,分享一个完整的影视剪辑的基本流程
  14. 地震数据剖面图-matlab
  15. 安装和配置fedora19要做的那些事,超值经验
  16. SVN添加账户及删除MyEclipse中记住的SVN账户名密码信息
  17. katago安装使用
  18. 第四范式发布「式说」大模型,以生成式AI重构企业软件(AIGS)
  19. 【Pygame实战】疫情期间给不能出门的你推荐一款爽游 《消灭病毒保卫城市》【强推】愿早日结束
  20. mysql打开eqd_备注数据库到MySQL(带CF?)/或如何获得NSF数据结构

热门文章

  1. 笔记react router 4(三)
  2. Linux搭建Maven私服, 使项目公用Android aar
  3. 两个函数彻底理解Lua中的闭包
  4. spider RPC更新至2.0.0-RELEASE
  5. Ambari Metrics Monitor/Sink 架构
  6. 经常使用的时间同步server地址
  7. 省市区三级联动 数据精确到乡镇一级
  8. linux c ping实现
  9. python3 mysql错误 pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
  10. linux 杀软 clamav 帮助选项翻译