php多任务程序实例解析


Posted in PHP onJuly 19, 2014

本文以实例简单解析了php多任务程序的实现方法,具体代码如下:

<?php
error_reporting(E_ALL);
set_time_limit(0);
/**
* php多任务程序的实现
* 借助proc_open
* 其实该叫进程(process)
* 能启动多进程,你可以使用你的想象力做你想做的了,以后再写个能用的
* 如果你是在linux上跑php,并且启用pcntl模块后,使用pcntl函数该更好
* 
*/
class Thread {
  protected $_pref; // process reference
  protected static $_instance = null;
  protected $_pipes;
  
  private function __construct() {
    $this->_pref = 0;
  }
  
  public static function getInstance($file) {
    if (null == self::$_instance) {
      self::$_instance = new self;
    }
    
    $descriptor = array(
    0 => array("pipe", "r"),
    1 => array("pipe", "w"),
    2 => array("file", "./error-output.txt", "a"),
    );
    self::$_instance->_pref = proc_open("php -q $file", $descriptor, self::$_instance->_pipes);
    return true;
  }
  
  public function __destruct() {
    proc_close($this->_pref);
    $this->_pref = null;
  }
}
// 测试代码
$file = __FILE__;
if(empty($argv[1])) {
  $t2 = Thread::getInstance("$file 1");
  $t3 = Thread::getInstance("$file 2");
  $t4 = Thread::getInstance("$file 3");
  $t5 = Thread::getInstance("$file 4");
  $t5 = Thread::getInstance("$file 5");
  $t5 = Thread::getInstance("$file 6");
  $t2 = Thread::getInstance("$file 7");
  $t3 = Thread::getInstance("$file 8");
  $t4 = Thread::getInstance("$file 9");
  $t5 = Thread::getInstance("$file 10");
  $t5 = Thread::getInstance("$file 11");
  $t5 = Thread::getInstance("$file 12");
  echo "Main thread done\n";
} else {
  $somecontent = "\r\n//~~~~~~~~~~~~-这次请求序号是:" . $argv[1];
  sleep(mt_rand(0, 3));
  $handle = fopen($file, 'a+');
  fwrite($handle, $somecontent);
}
PHP 相关文章推荐
php数组总结篇(一)
Sep 30 PHP
PHP开发过程中常用函数收藏
Dec 14 PHP
php设计模式 State (状态模式)
Jun 26 PHP
分享一下贝贝成长进度的php代码
Sep 14 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
php去除html标记的原生函数详解
Jan 27 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
php自定义函数转换html标签示例
Sep 29 PHP
php魔术方法功能与用法实例分析
Oct 19 PHP
Yii2框架实现数据库常用操作总结
Feb 08 PHP
php登录超时检测功能实例详解
Mar 21 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
May 14 PHP
php实现斐波那契数列的简单写法
Jul 19 #PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
Jul 19 #PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 #PHP
CodeIgniter中实现泛域名解析
Jul 19 #PHP
php实现建立多层级目录的方法
Jul 19 #PHP
PHP实现图片压缩的两则实例
Jul 19 #PHP
PHP简单实现“相关文章推荐”功能的方法
Jul 19 #PHP
You might like
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
append和appendTo的区别以及appendChild用法
2013/12/24 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
利用yarn实现一个webpack+react种子
2016/10/25 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
angularJS自定义directive之带参方法传递详解
2018/10/09 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
小程序表单认证布局及验证详解
2020/06/19 Javascript
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
Python中的装饰器用法详解
2015/01/14 Python
简单介绍Python中利用生成器实现的并发编程
2015/05/04 Python
python自动zip压缩目录的方法
2015/06/28 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
Python引用类型和值类型的区别与使用解析
2017/10/17 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
python实现人脸识别经典算法(一) 特征脸法
2018/03/13 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
基于python检查矩阵计算结果
2020/05/21 Python
Python本地及虚拟解释器配置过程解析
2020/10/13 Python
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
就业表自我评价分享
2014/02/06 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
关于倡议书的范文
2015/04/29 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python