php多任务程序实例解析

 更新时间:2014年07月19日 17:14:10   投稿:shichen2014  
这篇文章主要介绍了php多任务程序实例,需要的朋友可以参考下

本文以实例简单解析了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中强制类型转换的示例详解

    这篇文章主要给大家介绍了关于PHP中强制类型转换的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 怎样使用php与jquery设置和读取cookies

    怎样使用php与jquery设置和读取cookies

    有两种处理cookies的方式—服务端(php,asp等)和客户端(javascript).在这个教程中,我们将学习到以php和javascript这两种方式如何去创建cookies
    2013-08-08
  • PHP常见的序列化与反序列化操作实例分析

    PHP常见的序列化与反序列化操作实例分析

    这篇文章主要介绍了PHP常见的序列化与反序列化操作,结合实例形式分析了php使用serialize()及unserialize()进行序列化与反序列化相关操作技巧及注意事项,需要的朋友可以参考下
    2019-10-10
  • 利用PHP自动生成印有用户信息的名片

    利用PHP自动生成印有用户信息的名片

    对于日常照片的处理场景,通常我们的选择都是利用手机上的众多P图软件。使用它们就可以轻松便捷的实现添加文字的功能。而作为码农的我们,当某一天我们需要在编写的网页应用里添加这一功能时,我们该利用何种语言和工具来实现这一目标呢? 下面跟小编一起来看看。
    2016-08-08
  • PHP中isset与array_key_exists的区别实例分析

    PHP中isset与array_key_exists的区别实例分析

    这篇文章主要介绍了PHP中isset与array_key_exists的区别,较为详细的分析了isset与array_key_exists使用中的区别,并实例分析其具体用法,需要的朋友可以参考下
    2015-06-06
  • PHP三层结构(下) PHP实现AOP

    PHP三层结构(下) PHP实现AOP

    让我们把注意力集中到中间服务层上来。中间服务层代码比较简单,只是调用数据访问层代码将留言保存到数据库。
    2010-07-07
  • PHP远程调用以及RPC框架

    PHP远程调用以及RPC框架

    这篇文章主要介绍了PHP远程调用以及RPC框架,对远程调用感兴趣的同学,可以参考下
    2021-04-04
  • PHP文件读写操作相关函数总结

    PHP文件读写操作相关函数总结

    这篇文章主要介绍了PHP文件读写操作相关函数总结,本文总结了fwrite()、fread()、fgets()、fgetc()、file()、readfile() 等函数的介绍及使用例子,需要的朋友可以参考下
    2014-11-11
  • PHP实现算式验证码和汉字验证码实例

    PHP实现算式验证码和汉字验证码实例

    这篇文章主要介绍了PHP实现算式验证码和汉字验证码实例,本文直接给出实现代码,需要的朋友可以参考下
    2015-03-03
  • PHP 信号管理知识整理汇总

    PHP 信号管理知识整理汇总

    这篇文章主要给大家整理汇总了PHP 信号管理知识的相关资料,需要的朋友可以参考下
    2017-02-02

最新评论