php curl获取网页内容(IPV6下超时)的解决办法
原因:
在程序中我对curl获取内容都作了较为严格的超时限制,所以就会造成无法获取内容的问题。
解决方法:设置默认访问为ipv4。
php的curl设置方法如下:
代码如下:
<?php
/**
* IPV6下curl超时问题
*/
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
//设置curl默认访问为IPv4
if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')){
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
//设置curl请求连接时的最长秒数,如果设置为0,则无限
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
//设置curl总执行动作的最长秒数,如果设置为0,则无限
curl_setopt ($ch, CURLOPT_TIMEOUT,$timeout*3);
$file_contents = curl_exec($ch);
curl_close($ch);
注:curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4) 只有在php版本5.3及以上版本,curl版本7.10.8及以上版本时,以上设置才生效。
相关推荐
-
PHP根据IP地址获取所在城市具体实现
文件目录: ipLocation-----qqwry----------QQWry.Dat-----ipCity.class.php ipCity.class.php文件代码: 复制代码 代码如下: <?php class ipCity { /** * 根据ip地址获取对应所在城市 * @param type $userip 用户IP地址 * @return string */ public function getCity( $userip, $dat_p
-
php获取用户IPv4或IPv6地址的代码
其实这个很简单,只不过我一直想用 ipv6-test 的API做一个获取用户IP地址的东西--无奈JSON获取到的只是本机服务器的IP.算了,不研究了,何况人家提供的widget也挺好用的.谷歌了一下,找到这段代码,可以根据用户环境获取IP地址. 例如IPv6访问 www.shiwo.de 则获取到的是用户的IPv6地址 p.s 前提是网站做了A和AAAA解析 复制代码 代码如下: <?php function getIP() /*获取客户端IP*/ { if (@$_SERVER["HT
-
php中获取主机名、协议及IP地址的方法
本文实例讲述了php中获取主机名.协议及IP地址的方法.分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: $hostname=gethostbyaddr($_SERVER['remote_addr']); //获取主机名 echo $hostname; //输出结果 // $hosts=gethostbynamel('localhost'); //获取ip地址列表 print_r($hosts); //输出数组 // $
-
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
本文所述php实例可以完成获取局域网所有用户的电脑IP和主机名.及mac地址的功能,对于php程序设计人员有一定的参考借鉴价值.完整代码如下: <?php $bIp = gethostbyname($_ENV['COMPUTERNAME']); //获取本机的局域网IP echo "本机IP:",$bIp,"\n"; echo "本机主机名:",gethostbyaddr($bIp),"\n\n\n"; //gethos
-
php REMOTE_ADDR之获取访客IP的代码
<?php $iipp=$_SERVER["REMOTE_ADDR"]; echo $iipp; ?>[/code][code]<?php $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($user_IP) ? $user_IP : $_SER
-
PHP 获取ip地址代码汇总
代码一: function getip() { static $ip = ''; $ip = $_SERVER['REMOTE_ADDR']; if(isset($_SERVER['HTTP_CDN_SRC_IP'])) { $ip = $_SERVER['HTTP_CDN_SRC_IP']; } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $_SERV
-
php gethostbyname获取域名ip地址函数详解
返回 IP 网址. gethostbyname语法: string gethostbyname(string hostname); gethostbyname返回值: 字符串 函数种类: 网络系统 gethostbyname内容说明 本函数可返回某个机器名称 (Domain Name) 的 IP 网址 (IP Address).若执行失败,则返回原来的机器名称. 使用范例 下例的gethostbyname返回值为 61.129.70.67 <? echo gethostbyaddr("ww
-
PHP 获取客户端真实IP地址多种方法小结
经过复杂的判断与算是的获取IP地址函数 复制代码 代码如下: function getIP() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv('HTTP_CLIENT_IP'); } elseif (getenv('HTTP_X_FORWARDED_FOR')) { $ip = getenv('HTTP_X_FORWARDED_FOR'); } elseif (getenv('HTTP_X_FORWARDED')) { $ip = getenv('
-
php利用新浪接口查询ip获取地理位置示例
复制代码 代码如下: <?php function getIPLoc_sina($queryIP){ $url = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip='.$queryIP; $ch = curl_init($url); curl_setopt($ch,CURLOPT_ENCODING ,'utf8'); curl_setopt($ch, CURLOPT_TIMEOU
-
php实现根据IP地址获取其所在省市的方法
根据现有IP地址获取其地理位置(省份,城市等)的方法 function GetIpLookup($ip = ''){ if(empty($ip)){ return '请输入IP地址'; } $res = @file_get_contents('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=' . $ip); if(empty($res)){ return false; } $jsonMatches = array(
-
php 获取本机外网/公网IP的代码
大家一般都是用$_SERVER['REMOTE_ADDR']来获取用户IP, 但是如果使用了反向代理的,HTTP头中REMOTE_ADDR就不是用户的地址,反而是上一级代理的地址了. 经过我的研究有两种方法来获取用户的真实外网IP. 方法一:curl 复制代码 代码如下: function get_onlineip() { $ch = curl_init('http://www.ip138.com/ip2city.asp'); curl_setopt($ch, CURLOPT_RETURNTRA
-
php 获取客户端的真实ip
复制代码 代码如下: function GetIP(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strc
-
php中获取远程客户端的真实ip地址的方法
(1).REMOTE_ADDR:浏览当前页面的用户计算机的ip地址 (2).HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关 (3).HTTP_CLIENT_IP:客户端的ip 在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址.要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["
-
php 获取本地IP代码
复制代码 代码如下: <?function get_client_ip(){if ($_SERVER['REMOTE_ADDR']) {$cip = $_SERVER['REMOTE_ADDR'];} elseif (getenv("REMOTE_ADDR")) {$cip = getenv("REMOTE_ADDR");} elseif (getenv("HTTP_CLIENT_IP")) {$cip = getenv("HTT
随机推荐
- java旋转二维数组实例
- Python增量循环删除MySQL表数据的方法
- ASP.NET中使用TreeView显示文件的方法
- 探讨Ajax中同步与异步之间的区别
- destoon二次开发入门示例
- PHP设计模式之工厂模式实例总结
- windows下配置php5.5开发环境及开发扩展
- Unity3D获取当前键盘按键及Unity3D鼠标、键盘的基本操作
- 谈谈JavaScript中的几种借用方法
- Android App在线程中创建handler的方法讲解
- 探讨:innodb与myisam在存储上有何特点和区别
- vue修改vue项目运行端口号的方法
- Jaxb2实现JavaBean与xml互转的方法详解
- ruby元编程实际使用实例
- Android剪贴板用法详解
- Android中Glide实现超简单的图片下载功能
- c#操作ftp类分享
- 配置一个vue3.0项目的完整步骤
- Linux应用调试之strace命令详解
- React注册倒计时功能的实现