php多任务程序实例解析
作者:shichen2014 发布时间:2023-11-18 00:22:09
标签: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);
}
0
投稿
猜你喜欢
- 看着这个题目可能大家会有点陌生,不知道是什么,说的直白一点,RDFa就是让你的页面更好的被机器所理解,而不简简单单是展示你的页面,下面就关于
- 1.如何将Query String传送到另一个ASP文件去?Response.Redirect("second.asp? 
- 在网站开发的时候经常要用chr(),但本人比较懒没时间记那么多。于是到用到的时候就查,这样麻烦。现在将它写出来方便以后用到查,也方便大家!c
- FCKeditor的样式设置涉及到了两个文件,一个是你定义好的样式表文件.css,另一个是告诉fck样式表如何使用的xml文件,两个文件确一
- 昨晚着手给个人博客增加网易微博的调用,在Opera下却出现了一个意想不到的问题。内容的展示,一开始是做成横向不间断滚动(现在已经改成纵向定时
- 非常不错,大家可以自己应用下。<% '//数据处理部分 dim Content,Num,I,st
- 在新建数据库或附加数据库后,想添加关系表,结果出现下面的错误: 此数据库没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使
- 终于完成了偶的拖动窗口,花了近15个小时,庆祝一下(*^__^*);以前写了IE下的功能,于是又写了firefox下的功能,在firefox
- 看例子:运行代码框<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti
- 排查原因,发现是80端口被其它程序占用(很常见的事情╮(╯_╰)╭)。解决方法用记事本打开目录x:\xampp\apache\conf下的h
- 简单asp加载access数据库,并生成XML,然后再将XML数据加载进LIST组件范例学习。演示:http://www.taoshaw.c
- 北京时间2月15日据国外媒体报道,美国知名sns网站Facebook全球活跃用户量已突破1.75亿大关。数据显示,全球20%的网民都使用Fa
- 有什么办法可以列出数据视图吗?有,假设当前数据库为flashdays,则我们可用下列代码列出它的数据视图:pubDatabase
- 通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割
- PHP保存session默认的是采用的文件的方式来保存的,这仅仅在文件的空间开销很小的windows上是可以采用的,但是如果我们采用uinx
- Smptp类定义:smtplib.SMTP(host[,port[,local_hostname[,,timeout]]]),作为SMTP的
- 先上个效果图,就是用左右尖括号可改变中间日期的值。(点击中间显示区域有时间选择器弹框,用的插件就不说了,主要说自己原创的部分) &
- <% Response.Buffer = True Server.ScriptTimeOut=9999999&
- 前面的深入理解Routing章节,我们讲到了在MVC中,除了使用默认的ASP.NET 5的路由注册方式,还可以使用基于Attribute的特
- 1,WITH TEMPLET意思是,生成的页面架构将采用某个已设定的模板,在此之前我的一篇教程中介绍过,希望各位在看本教程之前对ASP采用模