`

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模拟post提交json数据示例.docx

    PHP 基于 curl 模拟 post 提交 json 数据示例 本文主要介绍了 PHP 基于 curl 模拟 post 提交 json 数据操作,通过实例形式分析了 PHP 使用 curl 实现 post 方式提交 json 数据相关操作步骤与留意事项。下面是文章的...

    php curl模仿form表单提交图片或文件

    在PHP开发中,有时我们需要模拟用户通过HTML表单提交数据,包括文件和图片。`cURL`库提供了一个强大的功能,允许我们实现这样的任务。在本文中,我们将深入探讨如何使用PHP的cURL库来模仿form表单提交,特别是提交...

    PHPCURL模拟登录获取及提交数据的函数.pdf

    PHPCURL模拟登录获取及提交数据的函数 PHPCURL是一个基于PHP语言的CURL扩展库,提供了模拟浏览器的功能,可以模拟用户的浏览器行为,发送HTTP请求,获取服务器响应数据,提交数据等。该库广泛应用于爬虫、自动化...

    php curl模拟post提交数据示例

    在Web开发中,通过PHP脚本使用cURL库模拟POST请求来提交数据是一项非常基础且重要的技能。本文会详细介绍如何使用PHP的cURL函数来模拟一个POST请求提交数据的示例,这对于需要通过程序控制与Web服务进行数据交互的...

    PHP100视频教程88:PHP.之.CURL模拟登陆并获取数据.rar

    在PHP中,我们通过`curl_init()`函数创建一个cURL会话,然后使用`curl_setopt()`设置各种选项,如URL、POST数据、cookie处理等。最后,用`curl_exec()`执行请求,并通过`curl_getinfo()`和`curl_error()`检查请求...

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

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

    php curl模拟post请求和提交多维数组的示例代码

    在PHP开发中,cURL库是一个非常重要的工具,它允许开发者通过HTTP协议与其他网络协议进行交互,例如模拟POST请求。本文将深入讲解如何使用PHP cURL来模拟POST请求,并处理多维数组作为请求参数。 首先,让我们看看...

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

    在PHP编程中,cURL库是一个非常强大的工具,它允许开发者执行HTTP和其他协议的请求,如GET、POST、PUT等,还可以进行模拟登陆、设置HTTP头、管理cookies等。本篇将详细介绍如何使用PHP的cURL函数来获取数据、模拟...

    PHP+Curl远程模拟登录并获取数据

    在IT行业中,PHP和cURL库常常被用来处理网络数据的获取和交互,尤其是在需要模拟登录和抓取特定页面信息的场景下。本篇文章将详细探讨如何利用PHP结合cURL来实现远程模拟登录并获取数据。 首先,让我们理解一下PHP...

    api.rar_definitionwir_后台curl模拟post 调接口

    本主题主要关注如何在后台使用curl命令来模拟POST请求,以便调用API接口。curl是一个强大的命令行工具,常用于在终端中传输数据到服务器或者从服务器获取数据。 首先,我们需要理解什么是`definitionwir`,这可能是...

    PHP技巧PHPCURL函数库.doc

    以下是对PHP cURL函数库的一些详细说明: 1. **curl_init()**: 这个函数用于初始化一个新的cURL会话。它接受一个可选的URL参数,如果提供,cURL会立即尝试访问该URL。例如: ```php $ch = curl_init('...

    php中CURL模拟进行微信接口的GET与POST例教程共

    在微信开发中,由于微信提供了丰富的API接口,开发者通常需要使用CURL来模拟用户行为,获取或提交数据。本教程将详细讲解如何在PHP中使用CURL来处理微信接口的GET与POST请求。 首先,我们需要理解GET和POST两种HTTP...

    PHP使用curl模拟post上传及接收文件的方法

    CURLOPT_REFERER用于设置模拟网页来源地址,这在需要模拟表单提交时非常有用。 6. 错误处理:在使用cURL过程中,错误处理是必不可少的。curl_error()函数可以获取cURL执行过程中发生的最后一个错误,从而进行相应的...

    PHP版SOCKET模拟提交POST消息(源码)

    在IT行业中,网络通信是至...总的来说,PHP的SOCKET功能为我们提供了一种灵活且强大的工具,可以用来实现各种网络通信任务,包括模拟POST提交。理解并掌握这种技术,对于提升PHP开发者的技能和解决问题的能力大有裨益。

    php_curl_使用实例

    ### PHP cURL 使用实例详解 #### 一、cURL简介 cURL 是一款强大的命令行工具,用于通过URL从或向服务器传输数据。...cURL 是一个非常强大且灵活的工具,掌握其使用方法对于进行网络编程非常有帮助。

    PHP Post And Get Class,封装Curl,可带cookie,让post/get更简单方便。带例程

    在cUrl中,可以使用`curl_setopt`函数设置`CURLOPT_POSTFIELDS`选项来提交POST数据。而在我们的类中,可能已经封装了一个方法,如`postRequest($url, $postData)`,该方法接受URL和一个包含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);...

Global site tag (gtag.js) - Google Analytics