我也玩玩php多线程
作者:寒川 发布于:2010-5-20 22:32 Thursday 分类:网页编程
一哥们准备开发个自动审核文章的小功能,找到我说需要php多线程执行,这可伤透脑筋了。为了这个多线程,绞尽脑汁,忙活了整整一天的时间,网上百度google了很久,还是没找到很好的办法解决。他的具体功能要求如下:两个php文件,a.php和b.php,但b.php中设置有sleep()函数,固b.php执行时间很长,同时需要用a.php来触发使b.php运行。我考虑过用服务器端include,require等,将b.php包含到a.php中,却因执行时间太长而放弃,也考虑过在a.php中输出<img src b.php>的方式,但是加载时间还是比较长,昨天晚上想到用ajax,效果貌似还将就,不过挺麻烦的。开始突发奇想,貌似curl应该能实现提交数据,正在网上搜索时突然又发现了fsockopen()函数,我的神啊!你对我太好了。问题顿然消除,废话不多说,赶快上菜:
以本博客域名测试如下:
a.php文件如下:
<?php
function runthread()
{
$fp = fsockopen("huikon.cn", 80, $errno, $errstr, 5);//修改对应部分
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "GET /fuck/b.php / HTTP/1.1\r\n";//修改对应部分 http://huikon.cn/fuck
文件夹
$out .= "Host: huikon.cn\r\n";//修改对应部分
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
/*输出执行过程
while (!feof($fp)) {
echo fgets($fp, 128);
}
*/
fclose($fp);
}
}
function a()
{//记录日志用
$open=@fopen('a.log',"ab
");
fwrite($open,"时间:".date("Y-m-d H:i:s").chr(10));
fclose($open);
}
runthread();
a();
echo '我爱美女,表明已经加载完毕!';
?>
b.php文件如下:
<?php
set_time_limit(30);
$open=@fopen('b.log',"ab
");
fwrite($open,"时间:".date("Y-m-d H:i:s").chr(10));
fclose($open);
//暂停 n 秒
sleep(10);
//重新开始
$open=@fopen('b.log',"ab
");
fwrite($open,"时间:".date("Y-m-d H:i:s").chr(10));
fclose($open);
?>
日志分类
最近日志
随机日志
最新评论
- 美图看看
哎 找些药酒擦擦 - 土
我今年都25了······ - 南宁搬家公司
越听越有感觉 - 南宁搬家公司
说实在的我学计算机的excel还没学会 - 草民
我也是学php的不过现在什么也不会了 - 南宁搬家公司
最是无情了 - 南宁搬家公司
我们都已不再年轻了 - 阿芙精油
我正遇到这个问题,以前的都是从数据库读取 - 宜春人才网
情人节过去好久了。。 - 杏林男科
一不小心三八节都过了哈哈
日志档案
- 2012年4月(1)
- 2012年2月(2)
- 2011年11月(2)
- 2011年9月(1)
- 2011年8月(2)
- 2011年7月(2)
- 2011年5月(1)
- 2011年3月(3)
- 2011年2月(2)
- 2010年12月(1)
- 2010年11月(2)
- 2010年10月(3)
- 2010年9月(9)
- 2010年8月(8)
- 2010年7月(13)
- 2010年6月(18)
- 2010年5月(24)
- 2010年4月(10)
- 2010年3月(14)
- 2010年2月(6)
- 2010年1月(7)
- 2009年11月(2)
- 2009年10月(3)
- 2009年9月(3)
- 2009年8月(8)
- 2009年7月(15)
- 2009年6月(14)
- 2009年4月(2)
- 2008年12月(1)
- 2008年6月(1)
- 2008年5月(10)
- 2008年4月(9)
- 2008年3月(5)
- 2008年2月(2)
- 2008年1月(5)
- 2007年12月(4)
- 2006年9月(6)
- 2006年7月(1)


