喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

【村长请吃饭啊】 ---北京诚聘--- 【你还在犹豫吗?】

上一主题 下一主题
     
标题: PHP如何实现多线程  
 
cyber
乞丐

超级管理员



UID 15380
精华 0
积分 -6
帖子 1147
金钱 -6 喜悦币
威望 0
人脉 0
阅读权限 1
注册 2002-7-21
状态 离线
PHP如何实现多线程

<?php
/*PHP多线程演示*/



if(!isset($id))
{

for($id=1;$id<4;$id++)
thread($id);//提交四个请求

}

else
{

//开始处理得到的每个请求
$fp=fopen("$id.txt","w");

fwrite($fp,time());
fclose($fp);

}



function thread($id)
{//提交请求(这里是提交给自己)

global $PHP_SELF;

$host=$_SERVER['HTTP_HOST'];

$h=fsockopen($host,80);
fputs($h,"GET $PHP_SELF?id=$id\r\n");
fclose($h);

}
?>
这个是否实现了PHP的多线程?

经测试.
当把$id<4改为$id<4000时,
文件 1.txt 到38.txt的内容是一样的
39.txt的内容比38.txt 的内容大1

可见经过一秒,才到39.txt.
我觉得这只能说明 这个循环在一秒内执行了38次,而非多线程.
如果改为
if(!isset($id))
{

for($id=1;$id<4;$id++) {
$fp=fopen("$id.txt","w");

fwrite($fp,time());
fclose($fp);
}

}
同样可达到效果.以上解说是否有道理




世界上第一个PHP专业搜索引擎:htp://bunsou.com
2006-6-21 11:48 AM#1
查看资料  访问主页  发短消息  QQ  顶部
 
菜鸟也要有理想
中级会员
Rank: 3Rank: 3
一般会员



UID 65342
精华 0
积分 439
帖子 426
金钱 439 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2005-8-1
状态 离线
[推荐阅读] 最后发一次关于转数据的贴! :(
。。。汗
多线程。。
2006-6-21 12:02 PM#2
查看资料  发短消息  顶部
 
21andy
高级会员
Rank: 4
初级会员



UID 68696
精华 0
积分 524
帖子 360
金钱 524 喜悦币
威望 0
人脉 0
阅读权限 50
注册 2006-2-18
状态 离线
[推荐阅读] php发email速度很慢,为什么?
采集高手啊,PFPF



我爱村姑
2006-6-21 01:06 PM#3
查看资料  发短消息  顶部
 
奶并瓦
该用户已被删除









[推荐阅读] mysqli_real_connect有永久连接的参数吗?
*** 作者被禁止或删除 内容自动屏蔽 ***
2006-6-21 01:24 PM#4
顶部
 
cyber
乞丐

超级管理员



UID 15380
精华 0
积分 -6
帖子 1147
金钱 -6 喜悦币
威望 0
人脉 0
阅读权限 1
注册 2002-7-21
状态 离线
[推荐阅读] 关于PHP中的MD5


QUOTE:
原帖由 奶并瓦 于 2006-6-21 01:24 PM 发表
楼主得代码不一定能运行,有问题得
我已经测试过/.

<?php
/*PHP多线程演示*/



if(!isset($id))
{

for($id=1;$id<4000;$id++)
thread($id);//提交四个请求

}

else
{

//开始处理得到的每个请求
if(!is_dir("multipal_threads"))mkdir("multipal_threads",0777);
$fp=fopen("multipal_threads/$id.txt","w");

fwrite($fp,time());
fclose($fp);

}



function thread($id)
{//提交请求(这里是提交给自己)

global $PHP_SELF;

$host=$_SERVER['HTTP_HOST'];

$h=fsockopen($host,80);
fputs($h,"GET $PHP_SELF?id=$id\r\n");
fclose($h);

}
?>




世界上第一个PHP专业搜索引擎:htp://bunsou.com
2006-6-21 01:27 PM#5
查看资料  访问主页  发短消息  QQ  顶部
 
chinahtml
金牌会员
Rank: 6Rank: 6


UID 69683
精华 0
积分 1004
帖子 1009
金钱 1004 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2006-3-16
状态 在线
[推荐阅读] web2.0网站100强
函数自生自载,据说可以实现多线程.



-地振山冈,一派溪山千古秀
-门朝大海,山合河水万年流
2006-6-21 01:28 PM#6
查看资料  发短消息  顶部
 
sanders_yao
版主
Rank: 7Rank: 7Rank: 7
or2 =333


UID 30286
精华 0
积分 2487
帖子 4632
金钱 2484 喜悦币
威望 0
人脉 3
阅读权限 100
注册 2004-7-23
来自 北京 菜户营
状态 离线
[推荐阅读] 一个不错的 editor, NOTEPAD++ V3.7
没做过多线程的东西
什么叫多线程?
人家都说线程之间还可以交流
这个怎么实现?
比如我想实现:
用户给出一条指令后输出一个页面
同时有另一个脚本在循环执行
直到用户给出另一条指令
循环结束并返回结果到客户端




最近写的一些代码都会在以下地址发布,有兴趣的来批:
http://www.phpx.com/happy/thread-131368-1-1.html
2006-6-21 01:35 PM#7
查看资料  Blog  发短消息  顶部
 
奶并瓦
该用户已被删除









[推荐阅读] php高级软件工程师(北京)
*** 作者被禁止或删除 内容自动屏蔽 ***
2006-6-21 06:22 PM#8
顶部
 
dezender
注册会员
Rank: 2



UID 74923
精华 0
积分 63
帖子 70
金钱 63 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2006-6-13
状态 离线
[推荐阅读] php网站开发工程师(北京)


QUOTE:
原帖由 sanders_yao 于 2006-6-21 01:35 PM 发表
没做过多线程的东西
什么叫多线程?
人家都说线程之间还可以交流
这个怎么实现?
比如我想实现:
用户给出一条指令后输出一个页面
同时有另一个脚本在循环执行
直到用户给出另一条指令
循环结束并返回结果 ...
你说的这些多线程都可以做,而且很简单。
只是 php 能不能我就不知道了。




我只会反编译Zend 的PHP
不会写PHP程序,郁闷啊
2006-6-21 07:20 PM#9
查看资料  发短消息  顶部
 
不懂就问 (不懂就问)
注册会员
Rank: 2
一般会员



UID 26596
精华 0
积分 139
帖子 126
金钱 139 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2004-3-2
状态 离线
[推荐阅读] 在php-5.1.4中使用mysqli


QUOTE:
原帖由 dezender 于 2006-6-21 07:20 PM 发表


我只会反编译Zend 的PHP
不会写PHP程序,郁闷啊
兄弟,反编译的程序贡献给大家啊,分享一下啊
2006-6-21 10:59 PM#10
查看资料  发短消息  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.024808 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP