当前位置: 首页 > 编程笔记 >

php多任务程序实例解析

邵弘致
2023-03-14
本文向大家介绍php多任务程序实例解析,包括了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实现多线程的使用技巧和注意事项,需要的朋友参考一下 我们首先来看一个示例 当执行上述操作时,即使在耗时的处理结束之前也显示处理完成。 由于“ > / dev / null& ”返回的值丢失,我们不会等待响应。 因此,处理完成指示比耗时处理更快。 但是,该方法不知道耗时的处理何时结束。 不要忘记考虑采取日志的执行,登录DB等方法向用户传递执

  • 本文向大家介绍PHP多进程编程实例详解,包括了PHP多进程编程实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP多进程编程。分享给大家供大家参考,具体如下: 第一步: $ php -m  命令查看php是否安装pcntl 和 posix扩展,若没有则安装 使用场景: 1. 要进行大量的网络耗时的操作 2. 要做大量的运算,并且,系统有多个cpu,为了让用户有更快的体验,把一个任

  • 本文向大家介绍PHP多进程编程实例,包括了PHP多进程编程实例的使用技巧和注意事项,需要的朋友参考一下 羡慕火影忍者里鸣人的影分身么?没错,PHP程序是可以开动影分身的!想完成任务,又觉得一个进程太慢,那么,试试用多进程来搞吧。这篇文章将会介绍一下PHP多进程的基本需求,如何创建多进程以及基本的信号控制,暂时不会告诉你如何进行进程间通信和信息共享。 1. 准备 在动手之前,请确定你用的不是M$ W

  • 我们有一个Spring Boot应用程序,并有计划的任务。 我们希望在多个服务器上部署我们的应用程序,因此将有多个应用程序实例。 如何将 Spring 配置为仅在指定的服务器上运行计划任务?

  • 本文向大家介绍实例讲解java定时任务,包括了实例讲解java定时任务的使用技巧和注意事项,需要的朋友参考一下 今天为大家分享的一个经验就是java的定时任务,就是说在一天的某个时间点执行以下代码。 在TimerManager 这个类里面,大家一定要注意时间点的问题。如果你设定在凌晨2点执行任务。但你是在2点以后发布的程序或是重启过服务,那这样的情况下,任务会立即执行,而不是等到第二天的凌晨2点执

  • 问题内容: 我在使用此软件包的脚本中遇到问题: 我找不到错误后写了这个小小的testscript,结果是执行cronjobs的次数是预期的两倍: 运行它给我这个输出: 有谁知道我如何能在不重复的情况下创建大量的Gocron作业? 谢谢 :) 问题答案: 还可以吧 将开始已经重新开始的作业,因此要解决我的问题,我不得不将脚本更改为此: 我希望这对遇到相同问题的任何人有所帮助!