php 编写线程教程,php 实现多线程
通过php的Socket方式实现php程序的多线程。php本身是不支持多线程的,那么如何在php中实现多线程呢?可以想一下,WEB服务器本身都是支持多线程的。每一个访问者,当访问WEB页面的时候,都将调用新的线程,通过这一点我们可以利用WEB服务器自身的线程来解决PHP不支持多线程的问题。
下面给出通过 fsockopen() 建立socket连接,然后用 用fputs() 发送消息,来实现的PHP多线程类代码:
$fp=fsockopen($_SERVER['HTTP_HOST'],80,&$errno,&$errstr,5);
if(!$fp){
echo "$errstr ($errno)
\n";
}
fputs($fp,"GET $_SERVER[PHP_SELF]?flag=1\r\n");
fclose($fp);
上面这段代码只是一个线程的操作过程。多进行几个这样的操作就是多线程了。目前所谓PHP的多线程程序都是基于这个方式的。
下面给一个完整的线程类代码。
*/
class thread {
var $count;
function thread($count=1) {
$this->count=$count;
}
function _submit() {
for($i=1;$i<=$this->count;$i++) $this->_thread();
return true;
}
function _thread() {
$fp=fsockopen($_SERVER['HTTP_HOST'],80,&$errno,&$errstr,5);
if(!$fp){
echo "$errstr ($errno)
\n";
}
fputs($fp,"GET $_SERVER[PHP_SELF]?flag=1\r\n");
fclose($fp);
}
function exec($func) {
isset($_GET['flag'])?call_user_func($func):$this->_submit();
}
}
//应用例子:
$th=new thread(10);//10个线程
$th->exec('demo');//执行行自定义的函数
function demo() {
fopen('data/'.microtime(),'w');
}
?>
http://codechina.spaces.live.com/blog/cns!bca6db10a924c24!575.entry
以上就介绍了php 实现多线程,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php 编写线程教程,php 实现多线程相关推荐
- java 编写线程公共类_002-java多线程工具类
packagecom.HM.eis.commons.multiThread;importjava.io.Serializable;importcom.alibaba.fastjson.JSON;/** ...
- 编写一个Java程序实现多线程,在线程中输出线程的名字,隔300毫秒输出一次,共输出20次。
编写一个Java程序实现多线程,在线程中输出线程的名字,隔300毫秒输出一次,共输出20次. 一.ThreadDemo class ThreadDemo extends Thread {public ...
- python 多线程 setdaemon_python使用Thread的setDaemon启动后台线程教程
多线程编程当中, 线程的存在形态比较抽象. 通过前台线程后台线程, 可以有效理解线程运行顺序.(复杂的多线程程序可以通过设置线程优先级实现) 后台线程与前台线程的直接区别是, 1)setDaemon( ...
- 同软件多个线程设置不同ip_多线程--面试知识
一.什么是进程? 软件需要安装操作系统之上,软件安装之后,需要找到核心的启动文件来运行软件. 运行软件:就是让软件执行,其实是将软件中的程序从硬盘加载到内存中,在内存中开辟当前软件所需要的内存空间,而 ...
- java线程知识梳理_Java多线程——多线程相关知识的逻辑关系梳理
1 学习多线程知识的根本目标 多线程知识的根本目标是:设计稳健的并发程序. 当然,本文无法回答这个实践性很强的问题(这与具体的业务相关,涉及到具体的策略),本文主要阐述相关知识之间的关系,希望初学者不 ...
- java线程创建销毁_c++多线程的创建挂起执行与销毁
资源简介 1. 创建一个基于对话框的应用程序.并增加如图所示控件:分别为3个进度条控件关联三个进度条类型的变量:并在对话框的初始化函数中,设定进度条的范围:为编辑框关联一个整型的变量:为12个按钮添加 ...
- Redis新特性、剖析线程模型(单线程与多线程)
一. Redis6.0 新特性 1. 多线程IO redis6.0引入多线程IO,只是用来处理网络数据的读写和协议的解析,而执行命令依旧是单线程,所以不需要去考虑set/get.事务.lua等的并发问 ...
- java基础线程_Java基础之多线程没那么复杂!
多线程的引入 1.什么是多线程 线程是程序执行的一条路径,一个进程中可以包含多条线程;多线程并发执行可以提高程序的效率 2.进程和线程之间的关系 操作系统可以同时执行多个任务,每个任务就是进程;进程可 ...
- 【Java_多线程并发编程】基础篇—线程状态及实现多线程的两种方式
1.Java多线程的概念 同一时间段内,位于同一处理器上多个已开启但未执行完毕的线程叫做多线程.他们通过轮寻获得CPU处理时间,从而在宏观上构成一种同时在执行的假象,实质上在任意时刻只有一个线程获得C ...
最新文章
- nyoj--891--找点(贪心)
- 惠普武汉实习生面试-20110320
- javaweb(三十八)——mysql事务和锁InnoDB(扩展)
- Shared Event-loop for Same-Origin Windows(译)
- 网络聊天室的技术与发展
- 如何在命令行下运行kettle的作业(job)和转换(transform)
- Codeforces Round #371 (Div. 2)
- 2345 网址导航劫持 解决办法
- coreseek java_使用python测试sphinx(coreseek)做全文索引
- 使用MySQL now函数的坑
- 智能(语音)对话系统架构研究
- cout 输出 uint8_t 整形值
- 转换金额为大写人民币-Java
- 【原创】从BZOJ2683 简单题中 整 CDQ分治解决三维偏序
- 《卓有成效的管理者》——学习心得(四)
- kubernetes云原生纪元:共享存储-PVPVC(上)
- 关于图灵JAVA一百道面试题总结
- C++ 时间戳 时间相关函数
- pycharm one dark主题设置及下载
- Deer计划(2)cloudcompare解析--八叉树
热门文章
- L. Coordinate Paper(CCPC 长春)构造
- P4590 [TJOI2018]游园会 dp套dp + 状态机
- 【AGC035C】Skolem XOR Tree【异或】【构造】
- 51nod1355-斐波那契的最小公倍数【min-max容斥】
- P2633-Count on a tree【主席树,LCA】
- P3538-[POI2012]OKR-A Horrible Poem【hash,字符串】
- Codeforces Round #671 (Div. 2)
- 洛谷P2501数字序列 动态规划
- 常用公有云接入——阿里
- JavaFX官方教程(十三)之应用效果