当前位置:编程学习 > php >>

一个很头疼的PHP问题

<?php
$a=fsockopen("127.0.0.1","80");
if($a)
{
echo "打开成功";
$b=fgets($a,512);
echo $b;
}
else
{
echo "打开失败";
}
?>

这段程序好像没什么错误吧,为什么一运行就提示下面的错打开成功
Fatal error: Maximum execution time of 30 seconds exceeded in E:\AppServ\www\33.php on line 6

 

 

答案:<?php
$a=fsockopen("127.0.0.1","80");
fputs($a,"GET / HTTP/1.1\r\nHOST:127.0.0.1\r\n\r\n");
if($a)
{
echo "打开成功";
$b=fgets($a,512);
echo $b;
}
else
{
echo "打开失败";
}
?>

 

1.你的php配置中设置了每个php页面最多运行30秒导致这个错误

2.你的程序运行了30秒以上,就是说fgets($a,512);一直在等待读取512个字符,而你之前没有发送任何请求,所以它会一直等待

解决方法:

先使用

fputs($fp,"GET / HTTP/1.1\nHost:127.0.0.1\n\n"); 

 

进一步了解http的请求方式具体可以参考http百度百科

http://baike.zhaoxi.net/view/9472.htm

楼上说的已经很详细了,是Php.Ini配置问题。

我在千脑上传了一个Php配置文件。直接下载下来覆盖掉之前的备份即可。

注意多备份。

 

Php配置文件下载地址: http://down.qiannao.com/space/file/betrox/-4e0a-4f20-5206-4eab/php.ini/.page

set_time_limit(0);

把这个放在最前面就可以了。。。

需要发送个header 头

楼上回答的很正确了.你没有发送header头,

另外如果你提供的域名(ip),连接不上的话也可出现这种错误,解决方法是用@仰制错误.

比如 $fp = @fsockopen("xxx.xxx.xxx.xxx");这样,基本是连接不上ip,他不会出现php错误他会正常的抛出你提示的"打开失败"这个错误

这里有个例子

http://www.phperz.com/php/php-article/061313K20081375.html

上一个:php a数组减去b数组
下一个:用PHP代码查看 空间容量

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,