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 相关文章推荐
从Web查询数据库之PHP与MySQL篇
Sep 25 PHP
php中计算时间差的几种方法
Dec 31 PHP
PHP自动生成后台导航网址的最佳方法
Aug 27 PHP
一漂亮的PHP图片验证码实例
Mar 21 PHP
php截取指定2个字符之间字符串的方法
Apr 15 PHP
php提高网站效率的技巧
Sep 29 PHP
php的4种常用运行方式详解
Dec 22 PHP
PHP实现RTX发送消息提醒的实例代码
Jan 03 PHP
自制PHP框架之设计模式
May 07 PHP
PHP框架Laravel中使用UUID实现数据分表操作示例
May 30 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 PHP
PHP实现创建以太坊钱包转账等功能
Apr 21 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
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
nginx+thinkphp下解决不支持pathinfo模式
2015/07/01 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
2018/04/20 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
sso跨域写cookie的一段js脚本(推荐)
2016/05/25 Javascript
Avalonjs 实现简单购物车功能(实例代码)
2017/02/07 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
Angular开发实践之服务端渲染
2018/03/29 Javascript
Vue 去除路径中的#号
2018/04/19 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
基于vue实现一个神奇的动态按钮效果
2019/05/15 Javascript
Node.js 实现简单的无侵入式缓存框架的方法
2019/07/21 Javascript
js实现详情页放大镜效果
2020/10/28 Javascript
详解vue-router的导航钩子(导航守卫)
2020/11/02 Javascript
Django中的CACHE_BACKEND参数和站点级Cache设置
2015/07/23 Python
以一个投票程序的实例来讲解Python的Django框架使用
2016/02/18 Python
python获取命令行输入参数列表的实例代码
2018/06/23 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
Python标准库itertools的使用方法
2020/01/17 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
AmazeUI的JS表单验证框架实战示例分享
2020/08/21 HTML / CSS
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的
2015/07/23 面试题
初中英语课后反思
2014/04/25 职场文书
法定代表人身份证明书
2014/09/10 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
摩登时代观后感
2015/06/03 职场文书
大脑的记忆过程在做数据压缩,不同图形也有共同的记忆格式
2022/04/29 数码科技
zabbix配置nginx监控的实现
2022/05/25 Servers