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 相关文章推荐
BBS(php &amp; mysql)完整版(二)
Oct 09 PHP
如何在PHP中使用Oracle数据库(3)
Oct 09 PHP
PHP实现定时生成HTML网站首页实例代码
Nov 20 PHP
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
Aug 07 PHP
php 字符串替换的方法
Jan 10 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
ThinkPHP验证码和分页实例教程
Aug 22 PHP
PHP安全上传图片的方法
Mar 21 PHP
PHP Hash算法:Times33算法代码实例
May 13 PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
Oct 16 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
2006/12/14 PHP
解决laravel session失效的问题
2019/10/14 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
js对象与打印对象分析比较
2013/04/23 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
node.js中的console用法总结
2014/12/15 Javascript
jQuery实现鼠标划过展示大图的方法
2015/03/09 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
JS 实现微信扫一扫功能
2018/09/14 Javascript
基于axios 解决跨域cookie丢失的问题
2018/09/26 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
Python排序算法之选择排序定义与用法示例
2018/04/29 Python
Django之模型层多表操作的实现
2019/01/08 Python
Python获取网段内ping通IP的方法
2019/01/31 Python
Python 编程速成(推荐)
2019/04/15 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
2019/05/07 Python
Django应用程序入口WSGIHandler源码解析
2019/08/05 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
Python 变量的创建过程详解
2019/09/02 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
中软国际Java程序员笔试题
2014/07/19 面试题
大学四年学习的自我评价分享
2013/12/09 职场文书
留学推荐信写作指南
2014/01/25 职场文书
项目合作协议书范本
2014/04/16 职场文书
读书活动总结范文
2014/04/26 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
2016年中学端午节主题活动总结
2016/04/01 职场文书