`

php的curl函数模拟post数据提交,首次速度非常慢的处理办法

    博客分类:
  • PHP
 
阅读更多

如果你用 curl_setopt 函数来与远程的webservice或者抓取页面的处理时,有时会遇到很奇怪的现象,首次访问的速度异常的慢,基本上要5s-10s的时间让人奔溃。

但是怎么查也差不出问题出在哪儿,最近发现一个文章写了处理这个问题的方式。

先从解决问题入手:

1、curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); //强制协议为1.0

2、curl_setopt($ch, CURLOPT_HTTPHEADER, array(''Expect: '')); //头部要送出'Expect: '

3、curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 ); //强制使用IPV4协议解析域名

以3个还不行,那我也没办法了。

 

Expect:100-continue 问题:转载于:http://www.laruence.com/2011/01/20/1840.html

在使用curl做POST的时候, 当要POST的数据大于1024字节的时候, curl并不会直接就发起POST请求, 而是会分为俩步,
  1. 发送一个请求, 包含一个Expect:100-continue, 询问Server使用愿意接受数据
  2. 接收到Server返回的100-continue应答以后, 才把数据POST给Server

这是libcurl的行为.
具体的RFC相关描述: http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3
于是,这样就有了一个问题, 并不是所有的Server都会正确应答100-continue, 比如lighttpd, 就会返回417 “Expectation Failed”, 则会造成逻辑出错,,

解决方法:curl_setopt($ch, CURLOPT_HTTPHEADER, array(''Expect: '')); //头部要送出'Expect: '

 

IPV4问题:转载于http://www.lovelucy.info/curl-exec-wget-slow-due-to-ipv6.html

现在很多服务器都开启了 IPv6 却没有路由,无法真正工作,反而导致一些不可预料的问题。

分享到:
评论

相关推荐

    php利用CURL模拟进行微信接口的GET与POST类

    php CURL函数可以模仿用户进行一些操作,如我们可以模仿用户提交数据也可以模仿用户进行网站访问了,下面我们来介绍利用CURL模拟进行微信接口的GET与POST例子,例子非常的简单就两个大家一起看看.

    PHP CURL模拟GET及POST函数代码

    php function vcurl($url, $post = ”, $cookie = ”, $cookiejar = ”, $referer = ”){ $tmpInfo = ”; $cookiepath = getcwd().’./’.$cookiejar; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url);...

    PHP函数分享之curl方式取得数据、模拟登陆、POST数据

    复制代码 代码如下:/********************** curl 系列 ***********************///直接通过curl方式取得数据(包含POST、HEADER等)/* * $url: 如果非数组,则为http;如是数组,则为https * $header: 头文件 * $...

    php使用CURL模拟GET与POST向微信接口提交及获取数据的方法

    php CURL函数可以模仿用户进行一些操作,如我们可以模仿用户提交数据也可以模仿用户进行网站访问了,下面我们来介绍利用CURL模拟进行微信接口的GET与POST例子,例子非常的简单就两个: Get提交获取数据 /** * @desc ...

    php利用CURL模拟进行微信接口的GET与POST类.zip

    php CURL函数可以模仿用户进行一些操作,如我们可以模仿用户提交数据也可以模仿用户进行网站访问了,下面我们来介绍利用CURL模拟进行微信接口的GET与POST例子,例子非常的简单就两个大家一起看看.

    PHP SOAP http post get 函数

    利用php curl 实现http post get 包括 SOAP 的发送的函数。 函数包括解决Cookie问题。 实用强大的函数,有了这个函数,做采集或者模拟登陆都很轻松了!

    PHP中使用CURL模拟登录并获取数据实例

    cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信息。本文以模拟登录开源中国...

    PHP CURL实现模拟登陆并上传文件操作示例

    本文实例讲述了PHP CURL实现模拟登陆并上传文件操作。分享给大家供大家参考,具体如下: <?php ...charset=gb2312'); //要注意你需要上传的网站服务器的运行环境,...function curl_form($post_data,$sumbit_url,$ht

    php 模拟POST提交的2种方法详解

    一、通过curl函数复制代码 代码如下:$post_data = array();$post_data[‘clientname’] = “test08”;$post_data[‘clientpasswd’] = “test08”;$post_data[‘submit’] = “submit”;$url=’...

    fnmock:PHP 函数模拟框架

    用于模拟函数的 PHP 测试工具。 大多数模拟框架只允许模拟对象。 FnMock 是一个小类,可以很容易地在类的上下文之外测试函数。 重要提示:仅当函数调用方位于命名空间内时才支持模拟函数。 例子 // Code ...

    PHP使用stream_context_create()模拟POST/GET请求的方法

    本文实例讲述了PHP使用stream_context_create()模拟POST/GET请求的方法。分享给大家供大家参考,具体如下: 有时候,我们需要在服务器端模拟 POST/GET 等请求,也就是在 PHP 程序中去实现模拟,改怎么做到呢?或者说...

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

    3.4 使用WebScarab观察实时的POST数据 52 3.5 查看隐藏表单域 55 3.6 使用TamperData观察实时的响应头 56 3.7 高亮显示JavaScript和注释 59 3.8 检测JavaScript事件 60 3.9 修改特定的元素属性 61 3.10 动态跟踪元素...

Global site tag (gtag.js) - Google Analytics