PHP多线程的实现(PHP多线程类)

通过WEB服务器来实现PHP多线程功能。

当然,对多线程有深入理解的人都知道通过WEB服务器实现的多线程只能模仿多线程的一些效果,并不是真正意义上的多线程。

但不管怎么样,它还是能满足我们的一些需要的,在需要类似多线程的功能方面还是可以采用这个类。

/*** @title:        PHP多线程类(Thread)* @version:    1.0* @author:        phper.org.cn < web@phper.org.cn >* @published:    2010-11-2* * PHP多线程应用示例:*  require_once 'thread.class.php';*  $thread = new thread();*  $thread->addthread('action_log','a');*  $thread->addthread('action_log','b');*  $thread->addthread('action_log','c');*  $thread->runthread();*  *  function action_log($info) {*      $log = 'log/' . microtime() . '.log';*      $txt = $info . "\r\n\r\n" . 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n";*      $fp = fopen($log, 'w');*      fwrite($fp, $txt);*      fclose($fp);*  }*/
class thread {var $hooks = array();var $args = array();function thread() {}function addthread($func){$args = array_slice(func_get_args(), 1);$this->hooks[] = $func;$this->args[] = $args;return true;}function runthread(){if(isset($_GET['flag'])){$flag = intval($_GET['flag']);}if($flag || $flag === 0){call_user_func_array($this->hooks[$flag], $this->args[$flag]);}else {for($i = 0, $size = count($this->hooks); $i < $size; $i++){$fp=fsockopen($_SERVER['HTTP_HOST'],$_SERVER['SERVER_PORT']);if($fp){$out = "GET {$_SERVER['PHP_SELF']}?flag=$i HTTP/1.1\r\n";$out .= "Host: {$_SERVER['HTTP_HOST']}\r\n";$out .= "Connection: Close\r\n\r\n";fputs($fp,$out);fclose($fp);}}}}
}

 

使用方法:

$thread = new thread(); $thread->addthread('func1','info1'); $thread->addthread('func2','info2'); $thread->addthread('func3','info3'); $thread->runthread();

说明:

addthread是添加线程函数,第一个参数是函数名,之后的参数(可选)为传递给指定函数的参数。

runthread是执行线程的函数。

转载于:https://www.cnblogs.com/yzh5251/p/3699823.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460428.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SPOJ Problem 6219:Edit distance

LCS问题&#xff0c;状态转移方程为f[i][j]min(f[i-1][j],f[i][j-1],f[i-1][j-1])1,若a[i]b[j]则f[i][j]f[i-1][j-1] #include<cstdio> #include<cstring> #define max(a,b)a>b?a:b #define INF 1000005 int t,i,j,k,l1,l2,q; char a[2005],b[2005]; int f[200…

int main() 与 void main()

从大一入学刚接触C到现在已满7个月了&#xff0c;虽然刚开始就知道int main才是标准的写法&#xff0c;但一直没有深刻理解为什么不能用void main而必须使用int main。 刚好最近有非计算机相关专业学C的同学问我int main、main和void main有什么区别&#xff0c;便觉得是时候好…

Socket、Http、TCP/IP、UDP的联系与区别

HTTP协议&#xff1a;简单对象访问协议&#xff0c;对应于应用层 &#xff0c;HTTP协议是基于TCP连接的 tcp协议&#xff1a; 对应于传输层 ip协议&#xff1a; 对应于网络层 TCP/IP是传输层协议&#xff0c;主要解决数据如何在网络中传输&#xff1b;而HTTP是应用层协…

honeywell扫码枪取消回车_霍尼韦尔条码扫描器常见问题与解决方法

原标题&#xff1a;霍尼韦尔条码扫描器常见问题与解决方法对于用户使用无线条码扫描器还是有线&#xff0c;再使用过程中难免会遇到一些小问题&#xff0c;又不知道这么解决&#xff0c;下面兆麟条码技术部提供一些条码扫描器出现的问题以及解决方法&#xff0c;供大家参考学习…

Ubuntu Server 分区案例

为什么80%的码农都做不了架构师&#xff1f;>>> 只有一台服务器&#xff0c;配置硬盘1TB&#xff0c;内存4GB&#xff0c;既要做开发服务器&#xff0c;又要做Web服务器和数据库服务器&#xff0c;分区如下&#xff1a; 挂载点大小分区格式 /boot512MBext4/20GBext…

转:有关常量的知识点

整型常量十进制&#xff1a;18、-31long int型常量 123l、123L、123456l、123456Lunsigned int型常量 123u、 123U根据实际数据大小确定int型还是long型以数字“0”开始的整型常量是八进制数022、-037010和10大小不一样因为八进制并不常用&#xff0c;所以此种表示法比较少见以…

python移位操作困惑

1.在使用python进行移位操作的时候发现python进行移位操作后的数值与其他语言不一样&#xff08;java,php,javascript&#xff09;&#xff0c;然后google了下 看到了这篇帖子http://www.cnblogs.com/zhengyun_ustc/archive/2009/10/14/shifting.html&#xff0c;然后又看了看…

e480 黑苹果_Thinkpad E480黑苹果组建Fusion Drive——鱼和熊掌我都要

Thinkpad E480黑苹果组建Fusion Drive——鱼和熊掌我都要2020-03-28 21:00:244点赞17收藏4评论小编注&#xff1a;此篇文章来自即可瓜分10万金币&#xff0c;周边好礼达标就有&#xff0c;邀新任务奖励无上限&#xff0c;点击查看活动详情概述近日在家闲来无事&#xff0c;一直…

Android -- WebView进度条

有系统actionbar requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);//先给Activity注册界面进度条功能 setContentView(R.layout.main);//布局 setProgressBarIndeterminateVisibility(true);//在需要显示进度条的时候调用这个方法 setProgressBarIndeter…

360网络修复工具_为什么大家都在骂360,但是360依旧是很强?

相信很多小伙伴也多多少少的听说过就是不要随便装360&#xff0c;因为装上360会如何如何。这些人往往说起来也是很有道理&#xff0c;我在以前上学的时候也是这么觉得&#xff0c;但是后来工作之后发现并不是这样。360先说一下360安全卫士的功能&#xff0c;有系统优化、垃圾清…

c语言编程题目(一)

2017-05-09 19:54 1人阅读 评论(0) 收藏 举报转自&#xff1a;http://blog.csdn.NET/oqqhutu12345678/article/details/69524383 1. 用预处理指令#define 声明一个常数&#xff0c;用以表明1年中有多少秒&#xff08;忽略闰年问题&#xff09; #define SECONDS_PER_YEAR (60 * …

Java运行时内存

对于java程序员来说&#xff0c;并不必显示地对内存进行管理&#xff0c;一切都交给java虚拟机去做吧&#xff0c;而且&#xff0c;你也不一定做得比java虚拟机来得专业。好像所有内存管理都交给虚拟机去做就万事大吉了&#xff0c;但是&#xff0c;事实有时并非如此&#xff0…

中班机器人上课视频_家委会:出班费买智能扫地机器人,不用家长搞卫生了,莫名其妙...

【01】原来大家上学&#xff0c;几乎是很随意的样子&#xff0c;有人至没上过幼儿园&#xff0c;有的上过半年&#xff0c;然后就直接升小学。可即使是升小学了&#xff0c;家长也不会管&#xff0c;全凭自己了。可如今随着社会的发展&#xff0c;父母们都非常重视孩子们的学习…

Powerful Sleep(神奇的睡眠-睡眠生物钟的秘密:如何睡得更少却睡得更好)阅读笔记...

睡眠机制 我们活着的时候&#xff0c;大脑会产生脑电波。脑电图仪器通过贴在人头上的一些电极读出脑电波的活动&#xff0c;然后把活动用图表显示出来。 睡眠过程可以分为5个过程&#xff0c;划分依据与大脑发出的脑电波类型。 当人清醒时&#xff0c;大脑发出β脑电波&#xf…

ue4集合类型_UE4粒子系统渲染管线概述

本文基于UE4版本4.25.3&#xff0c;对Cascade粒子系统的移动端渲染管线进行简单的概括和描述。Game Thread部分粒子系统Actor被Spawn&#xff08;或所在的Level被加载&#xff09;的时候&#xff0c;UParticleSystemComponent注册和初始化&#xff0c;并通过CreateSceneProxy函…

ip反查MAC地址

打开DOS命令提示符窗口&#xff0c;在窗口中输入命令“nbtstat -a IP”&#xff0c;如以上面查到的“10.10.3.21”为例&#xff0c;输入“nbtstat -a 10.10.3.21”转载于:https://www.cnblogs.com/jtm789/p/3715535.html

2、Sprite,SpriteBatch,Texture,TextureRegion的初步认识

昨天搭建了环境&#xff0c;今天就初步接触这个4个控件&#xff08;Sprite&#xff0c;SpriteBatch&#xff0c;Texture&#xff0c;TextureRegion&#xff09; 1、SpriteBatch 这个吗&#xff0c;我没有看api文档&#xff0c;偶是直接看土豆的博客学习的&#xff0c;我看了代码…

nedc和epa续航里程什么意思_NEDC、WLTP和EPA续航里程哪种最真实,用车注意事项都有什么...

我的理解是&#xff1a;从目前来看&#xff0c;衡量一款新能源电动汽车的性能指标&#xff0c;其中最为关键的就是车辆的续航里程&#xff0c;而这个续航里程使用不同的测试方法又会有不同的表现。从现有的续航里程测试标准来看&#xff0c;主要有NEDC、WLTP、EPA三种方式&…

javascript系列之执行上下文

写在前面&#xff1a;一 直想系统的总结一下学过的javascript知识&#xff0c;喜欢这门语言也热爱这门语言。未来想从事前端方面的工作&#xff0c;提前把自己的知识梳理一下。前面写了些 DOM的知识&#xff0c;略觉水平有限。没几个月就要开赴找工作的前线&#xff0c;奈何自己…

linux系统在虚拟机中迁移的技术难点

linux系统在虚拟机迁移中的技术难点通常我们期望虚拟机的迁移能够全部自动化或者部分自动化完成&#xff0c;但实际上Linux系统在P2V&#xff08;Physical to virtual 物理到虚拟&#xff09;和V2V&#xff08;virtual to virtual&#xff09;的迁移中可能遇到一些困难。1.磁盘…