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读取MySQL数据代码
Jun 05 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
php有道翻译api调用方法实例
Dec 22 PHP
Yii实现多数据库主从读写分离的方法
Dec 29 PHP
关于WordPress的SEO优化相关的一些PHP页面脚本技巧
Dec 10 PHP
Joomla使用Apache重写模式的方法
May 04 PHP
laravel中的错误与日志用法详解
Jul 26 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
完美解决在ThinkPHP控制器中命名空间的问题
May 05 PHP
PHP array_shift()用法实例分析
Jan 07 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
Jan 26 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/11/26 PHP
PHP基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
jquery miniui 教程 表格控件 合并单元格应用
2012/11/25 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
Javascript Object 对象学习笔记
2014/12/17 Javascript
JS获取时间的方法
2015/01/21 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
JQuery.validate在ie8下不支持的快速解决方法
2016/05/18 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
React利用插件和不用插件实现双向绑定的方法详解
2017/07/03 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
新西兰杂志订阅:isubscribe
2019/08/26 全球购物
英国时尚配饰、珠宝和服装网站:KJ Beckett
2020/01/23 全球购物
最新英语专业学生求职信范文
2013/09/21 职场文书
团日活动总结模板
2014/06/25 职场文书
群教班子对照检查材料
2014/08/26 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
李白故里导游词
2015/02/12 职场文书
2019大学生实习报告
2019/06/21 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
JavaScript 原型与原型链详情
2021/11/02 Javascript
redis缓存存储Session原理机制
2021/11/20 Redis
解决Oracle数据库用户密码过期
2022/05/11 Oracle
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技