php get_headers 判断回来是否是200 碰到不存在的脚本执行超时
php get_headers 判断返回是否是200 碰到不存在的脚本执行超时
不存在的IP网址,会一直等待响应,直到函数超时,导致页面迟迟无法显示。
failed to open stream: HTTP request failed!
Fatal error: Maximum execution time of 30 seconds exceeded
设置了 ini_set('max_execution_time', 10);还一样
要不不用这个函数自己写socket了,用这个函数的curl_init,麻烦,各位有啥别好的方法没
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
最后一个参数 $timeout设为5,即可设置最大连接时间5秒,过期函数返回,程序并不会退出
------解决方案--------------------
思路是楼上的,get_headers 只能说php这个函数不完善,咱只有用socket自己写了
由于不能给自己分,我用另外的账号登陆了,以下是完整代码,也给别人做做贡献了
- PHP code
function DoGet($url) { $url2 = parse_url($url); if(!isset($url2['path']))$url2['path']=''; $url2["path"] = ($url2["path"] == "" ? "/" : $url2["path"]); $url2["port"] = (isset($url2["port"])?$url2["port"]:80); $host_ip = @gethostbyname($url2["host"]); $fsock_timeout =2; //2 second if(!($fsock = fsockopen($host_ip, $url2["port"], $errno, $errstr, $fsock_timeout))) { // echo 'fsockopen fail'; return false; } $request = $url2["path"] .(isset($url2["query"]) ? "?".$url2["query"] : ""); $in = "GET " . $request . " HTTP/1.0\r\n"; $in .= "Accept: */*\r\n"; $in .= "User-Agent: Payb-Agent\r\n"; $in .= "Host: " . $url2["host"] . "\r\n"; $in .= "Connection: Close\r\n\r\n"; stream_set_timeout( $fsock , $fsock_timeout ) ; if(!@fwrite($fsock, $in, strlen($in))){ //echo 'fwrite fail'; fclose($fsock); return false; } $status = stream_get_meta_data( $fsock ) ; //发送数据超时 if($status['timed_out'] ) { // echo "Write time out" ; fclose( $fsock ); return false; } $out = null; while($buff = @fgets($fsock, 2048)) { $out .= $buff; //只读取头部信息 if(false!==strpos($out, "\r\n\r\n"))break; } $status = stream_get_meta_data( $fsock ) ; //读取数据超时 if( $status['timed_out'] ) { // echo "Read time out" ; fclose( $fsock ); return false; } fclose($fsock); $pos = strpos($out, "\r\n\r\n"); $head = substr($out, 0, $pos); //http head return $head; } $rs= DoGet("http://www.ba05afasdfsiddf08usfa.com"); if(!$rs)echo 'fail'; else echo $rs; <div class="clear"> </div>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP函数介绍—get_headers():获取URL的响应头信息概述:在PHP开发中,我们经常需要获取网页或远程资源的响应头信息。PHP函数get_headers()能够方便地获取目标URL的响应头信息,并以数组形式返回。本文将介绍get_headers()函数的用法,以及提供一些相关的代码示例。get_headers()函数的用法:get_header

报错的原因NameResolutionError(self.host,self,e)frome是由urllib3库中的异常类型,这个错误的原因是DNS解析失败,也就是说,试图解析的主机名或IP地址无法找到。这可能是由于输入的URL地址不正确,或者DNS服务器暂时不可用导致的。如何解决解决此错误的方法可能有以下几种:检查输入的URL地址是否正确,确保它是可访问的确保DNS服务器可用,您可以尝试在命令行中使用"ping"命令来测试DNS服务器是否可用尝试使用IP地址而不是主机名来访问网站如果是在代理

keepalive_timeouthttp有一个keepalive模式,它告诉webserver在处理完一个请求后保持这个tcp连接的打开状态。若接收到来自客户端的其它请求,服务端会利用这个未被关闭的连接,而不需要再建立一个连接。httpkeep-alive,網頁的每一個請求都是http(圖片,css等),而打開http請求是要先建立tcp連接,而如果一個頁面每個請求都要打開及關閉一個tcp連接就會做成資源的浪費.keepalive_timeout就是當一個http請求完成,其tcp連接會存留下

区别:1、定义不同,url是是统一资源定位符,而html是超文本标记语言;2、一个html中可以有很多个url,而一个url中只能存在一个html页面;3、html指的是网页,而url指的是网站地址。

现在很多热爱游戏的windows用户都进入了Steam客户端,可以搜索、下载和玩任何好游戏。但是,许多用户的个人资料可能具有完全相同的名称,这使得查找个人资料或什至将Steam个人资料链接到其他第三方帐户或加入Steam论坛以共享内容变得困难。为配置文件分配了一个唯一的17位id,它保持不变,用户无法随时更改,而用户名或自定义URL可以更改。无论如何,一些用户并不知道他们的Steamid,这对于了解这一点非常重要。如果您也不知道如何找到您帐户的Steamid,请不要惊慌。在这篇文

不少的用户在升级完win11系统后会出现蓝屏的现象,例如:clockwatchdogtimeout蓝屏,那么这要怎么解决?用户们可以看看更新驱动程序或者是检查过热问题等等来进行操作,下面就让本站来为用户们来仔细的介绍一下clockwatchdogtimeout蓝屏win11解决方法吧。clockwatchdogtimeout蓝屏win11解决方法1、更新驱动程序:更新CPU和主板驱动程序可能会解决问题。可以通过访问制造商的网站下载最新的驱动程序。2、检查过热问题:过热也可能是导致此错误的原因之一

主板上SPDIFOUT连接线序最近我遇到了一个问题,就是关于电线的接线顺序。我上网查了一下,有些资料说1、2、4对应的是out、+5V、接地;而另一些资料则说1、2、4对应的是out、接地、+5V。最好的办法是查看你的主板说明书,如果找不到说明书,你可以使用万用表进行测量。首先找到接地,然后就可以确定其他的接线顺序了。主板vdg怎么接线连接主板的VDG接线时,您需要将VGA连接线的一端插入显示器的VGA接口,另一端插入电脑的显卡VGA接口。请注意,不要将其插入主板的VGA接口。完成连接后,您可以

在Vue应用开发中,使用vue-resource进行HTTP请求是常见的操作。尽管vue-resource提供了很多方便的功能,但有时我们会遇到“Error:timeoutofxxxmsexceeded”这样的错误提示。这种错误通常是因为请求超时而导致的。那么,在这种情况下,我们应该怎样解决这个问题呢?1.增加请求超时时间首先,我们可以通过增加请
