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 相关文章推荐
封装一个PDO数据库操作类代码
Sep 09 PHP
php 团购折扣计算公式
Nov 24 PHP
php 短链接算法收集与分析
Dec 30 PHP
PHP实现加密的几种方式介绍
Feb 22 PHP
php控制文件下载速度的方法
Mar 24 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
Feb 26 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
PHP编程获取各个时间段具体时间的方法
May 26 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
laravel执行php artisan migrate报错的解决方法
Oct 09 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设计模式 php实现门面模式(Facade)
2015/12/07 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
js css样式操作代码(批量操作)
2009/10/09 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
JS实现可点击展开与关闭的左侧广告代码
2015/09/02 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
AngularJS实现textarea记录只能输入规定数量的字符并显示
2016/04/26 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
详解angularjs的数组传参方式的简单实现
2017/07/28 Javascript
通过V8源码看一个关于JS数组排序的诡异问题
2017/08/14 Javascript
js循环map 获取所有的key和value的实现代码(json)
2018/05/09 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
基于JavaScript实现十五拼图代码实例
2020/04/26 Javascript
Python实现简单的获取图片爬虫功能示例
2017/07/12 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
Flask框架单例模式实现方法详解
2019/07/31 Python
Django中create和save方法的不同
2019/08/13 Python
python解释器spython使用及原理解析
2019/08/24 Python
python中seaborn包常用图形使用详解
2019/11/25 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
Servlet的生命周期
2013/08/25 面试题
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
小学教师师德整改措施
2014/09/29 职场文书
工作失误检讨书(经典集锦版)
2014/10/17 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
美术教师个人工作总结
2015/02/06 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书