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作的文本留言本的例子(二)
Oct 09 PHP
如何从一个php文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
php whois查询API制作方法
Jun 23 PHP
php数组去重实例及分析
Nov 26 PHP
php获取bing每日壁纸示例分享
Feb 25 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
Jun 05 PHP
如何使用微信公众平台开发模式实现多客服
Jan 06 PHP
ThinkPHP连接Oracle数据库
Apr 22 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
Aug 01 PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 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批量更改数据库表前缀实现方法
2013/10/26 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
CI框架源码解读之利用Hook.php文件完成功能扩展的方法
2016/05/18 PHP
PHP+RabbitMQ实现消息队列的完整代码
2019/03/20 PHP
利用JQuery的load函数动态加载其它页面的内容的实现代码
2010/12/14 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
PHP PDO操作总结
2014/11/17 Javascript
在JavaScript中处理字符串之link()方法的使用
2015/06/08 Javascript
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
2016/09/05 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
js实现背景图自适应窗口大小
2017/01/10 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
vue-router单页面路由
2017/06/17 Javascript
自制简易打赏功能的实例
2017/09/02 Javascript
javascript中的闭包概念与用法实践分析
2019/07/26 Javascript
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
wxPython实现画图板
2020/08/27 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
python中xlutils库用法浅析
2020/12/29 Python
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
工伤事故赔偿协议书
2014/04/15 职场文书
自动化专业毕业生求职信
2014/06/18 职场文书
个人简历求职信范文
2015/03/20 职场文书
2016新年慰问信范文
2015/03/25 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
奖金申请报告模板
2015/05/15 职场文书
国情备忘录观后感
2015/06/04 职场文书
Python中的datetime包与time包包和模块详情
2022/02/28 Python
分享7个 Python 实战项目练习
2022/03/03 Python