Home > Backend Development > PHP Tutorial > php多线程求答疑

php多线程求答疑

WBOY
Release: 2016-06-23 14:14:11
Original
810 people have browsed it

多线程 php

在网上看到一些demo,很多一样的,自己拿到本机测试,出了点问题:
//a.php 
function runThread(){ 
$fp = fsockopen('localhost', 80, $errno, $errmsg); 
fputs($fp, "GET /a.php?act=b"); 
fclose($fp);
}

function a(){
$fp = fopen('result_a.log', 'w'); 
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n"); 
fclose($fp);
}

function b(){ 
$fp = fopen('result_b.log', 'w'); 
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "\r\n"); fclose($fp);
}

if(!isset($_GET['act'])) $_GET['act'] = 'a';

if($_GET['act'] == 'a'){ 
runThread(); 
a();
}
else if($_GET['act'] == 'b') b();
?>

每次我访问localhost/a.php时,只能在result_a.log中写入记录,result_b.log中从来不会写入记录,我确定我的php环境中已经可以启用fsocket扩展了的,求高手指点一下

回复讨论(解决方案)

自挽一下,求大哥们指点

因为你默认的$_GET['act'] 是 执行 a()函数
执行localhost/a.php?act=b试试

php的多线程?

应该是fputs里面的数据包头部些少了什么造成的。
我的意见:
1 使用firebug看看就知道应该写什么,观察你请求的包头
2 放弃fsock系列函数,很多地方都不支持这个,不过你可以使用curl来模拟你的请求。

 使用firebug看看错误,或者用echo  检查程序执行到哪了?没执行到哪一步一步的检查。

好吧,该结贴了

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template