一个很头疼的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代码查看 空间容量