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 相关文章推荐
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
php配置php-fpm启动参数及配置详解
Nov 04 PHP
php生成扇形比例图实例
Nov 06 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
使用php显示搜索引擎来的关键词
Feb 13 PHP
浅谈discuz密码加密的方式
May 22 PHP
Win7下手动安装apache2.2、php5.4笔记
Apr 03 PHP
PHP微信开发之查询城市天气
Jun 23 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
Dec 29 PHP
PHP中cookie知识点学习
May 06 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
xajax写的留言本
2006/11/25 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
PHP基于GD库实现的生成图片缩略图函数示例
2017/07/05 PHP
swoole_process实现进程池的方法示例
2018/10/29 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
Mootools 1.2教程 类(一)
2009/09/15 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
jQuery平滑旋转幻灯片特效代码分享
2015/09/07 Javascript
jQuery实现的简单百分比进度条效果示例
2016/08/01 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
基于ES6 Array.of的用法(实例讲解)
2017/09/05 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
python绘制简单折线图代码示例
2017/12/19 Python
python3 enum模块的应用实例详解
2019/08/12 Python
Django视图扩展类知识点详解
2019/10/25 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
2014年党员自我评议总结
2014/09/23 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
免职通知
2015/04/23 职场文书
javascript canvas实现雨滴效果
2021/06/09 Javascript
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python
Python实现双向链表
2022/05/25 Python