php curl 连接超时,Curl 请求本地接口时候超时。

curl 请求的时候 如果用post请求,传递参数为 数组的时候 header 头 会被设置为

multipart/form-data  如果是字符串 形式

header 头会被设置为application/x-www-urlencode

在使用数组传值时,php://input是接收不到数据的​

今天项目中有个问题出现 ,a网站调用b网站 b网站调用远程c网站。在curl返回值中一直出现 超时现象 ,curl

超时有两种

一个是连接超时时间,另一个是数据传输的最大允许时间。

连接超时时间用 --connect-timeout

参数来指定,数据传输的最大允许时间用

连接超时的话,出错提示形如:

curl: (28) connect() timed out!

数据传输的最大允许时间超时的话,出错提示形如:

curl: (28) Operation timed out after 2000 milliseconds with 0

bytes received

我今天就是出现的第二种错误 原因是 a和b网站都是配置在本地的,我本地是phpstudy

用的是Nginx。​

fastcig-pass的设置值(127.0.0.1:9000)。

设置都是以keepalive方式请求,接收到PHP文件时,交于后端过程PHPCGI解析处理(127.0.0.1:9000),等待响应。

而在本地文件以CURL请求本地环境中PHP文件时,之前的PHP还在等待CURL后的结果,这时9000端口已经被占用。导致CURL一直在处于等待状态。设置了超时时间

curl_setop($ch,CURLOPT_TIMEOUT,20),过了超时时间

就返回curl: (28) Operation timed out

after 2000 milliseconds with 0 bytes received

我的​解决方案

把b网站的server fastcgi

端口改为了9003

打开cmd

php-cgi.exe -b

127.0.0.1:9003 -c php.ini 运行这个命令 但是cmd 命令窗口不能关闭。

以下摘自网络

上面用cmd命令行窗口是不是很麻烦,还不能关闭窗口,稍微不注意就悲剧了

可以用下面的一个小工具:RunHiddenConsole

首先你需要下载一个小文件RunHiddenConsole

然后复制到nginx目录,新建两个bat批处理文件,start_nginx.bat和stop_nginx.bat

注意:RunHiddenConsole.exe

一定要和两个批处理文件在同一级目录下

,否则nginx启动不了

具体两个文件怎么写附件里已经写好了,直接下载就可以了

http://download.csdn.net/download/u011829023/9505226

原文链接:http://blog.csdn.net/zhaoerduo/article/details/51272905​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值