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 相关文章推荐
兼容PHP5的PHP目录管理函数库
Jul 10 PHP
apache php模块整合操作指南
Nov 16 PHP
PHP的基本常识小结
Jul 05 PHP
php 参数过滤、数据过滤详解
Oct 26 PHP
PHP常用设计模式之委托设计模式
Feb 13 PHP
php判断用户是否关注微信公众号
Jul 22 PHP
PHP实现的常规正则验证helper公共类完整实例
Apr 27 PHP
微信第三方登录(原生)demo【必看篇】
May 26 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
Mar 01 PHP
laravel配置Redis多个库的实现方法
Apr 10 PHP
实例化php类时传参的方法分析
Jun 05 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
第一个无线电台是由谁发明的
2021/03/01 无线电
php 定界符格式引起的错误
2011/05/24 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
php获取从html表单传递数组的方法
2015/03/20 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
2019/10/15 PHP
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
初步使用Node连接Mysql数据库
2016/03/03 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
微信小程序 label 组件详解及简单实例
2017/01/10 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
分析Python读取文件时的路径问题
2018/02/11 Python
Windows下PyCharm安装图文教程
2018/08/27 Python
Python rstrip()方法实例详解
2018/11/11 Python
Python单元和文档测试实例详解
2019/04/11 Python
Python数据类型之Number数字操作实例详解
2019/05/08 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
2020/05/16 Python
django中related_name的用法说明
2020/05/20 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
企业管理专业个人求职信范文
2013/09/24 职场文书
总经理驾驶员岗位职责
2013/12/04 职场文书
党员作风建设整改方案
2014/10/27 职场文书
2014年库房工作总结
2014/11/26 职场文书
先进班集体事迹材料
2014/12/25 职场文书
学校重阳节活动总结
2015/03/24 职场文书
入门学习Go的基本语法
2021/07/07 Golang
深入理解pytorch库的dockerfile
2022/06/10 Python