php的curl函数有多个参数:
CURLOPT_TIMEOUT_MS 设置cURL允许执行的最长毫秒数。  在cURL 7.16.2中被加入。从PHP 5.2.3起可使用。 所以使用的时候请先查看libcurl版本 curl --version
但是这个函数有个bug,如果时间小于1000毫秒也就是1秒的话,会立马报错,查看下面说明
  If you want cURL to timeout in less than one second, you can use CURLOPT_TIMEOUT_MS, although there is a bug/"feature"  on "Unix-like systems" that causes libcurl to timeout immediately if the value is < 1000 ms with the error "cURL Error (28): Timeout was reached".  The explanation for this behavior is:
  "If libcurl is built to use the standard system name resolver, that portion of the transfer will still use full-second resolution for timeouts with a minimum timeout allowed of one second."
  What this means to PHP developers is "You can use this function without testing it first, because you can't tell if libcurl is using the standard system name resolver (but you can be pretty sure it is)"
  The problem is that on (Li|U)nix, when libcurl uses the standard name resolver, a SIGALRM is raised during name resolution which libcurl thinks is the timeout alarm.
  The solution is to disable signals using CURLOPT_NOSIGNAL.  Here's an example script that requests itself causing a 10-second delay so you can test timeouts:
  

 1 <?php
 2 if (!isset($_GET['foo'])) {
 3         // Client
 4         $ch = curl_init('http://localhost/test/test_timeout.php?foo=bar');
 5         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 6         curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
 7         curl_setopt($ch, CURLOPT_TIMEOUT_MS, 200);
 8         $data = curl_exec($ch);
 9         $curl_errno = curl_errno($ch);
10         $curl_error = curl_error($ch);
11         curl_close($ch);
12
13         if ($curl_errno > 0) {
14                 echo "cURL Error ($curl_errno): $curl_error\n";
15         } else {
16                 echo "Data received: $data\n";
17         }
18 } else {
19         // Server
20         sleep(10);
21         echo "Done.";
22 }
23 ?> 

对,增加 curl_setopt($ch, CURLOPT_NOSIGNAL, 1)

 

转载于:https://www.cnblogs.com/sky20081816/archive/2013/05/30/3108657.html

php curl CURLOPT_TIMEOUT_MS 小于1秒 解决方案相关推荐

  1. git error: RPC failed; curl 56 GnuTLS recv error 解决方案

    git error: RPC failed; curl 56 GnuTLS recv error 解决方案 参考文章: (1)git error: RPC failed; curl 56 GnuTLS ...

  2. curl 下载地址中有特殊字符解决方案

    curl 下载地址中有特殊字符解决方案 情况 使用 curl 下载 地址中带有 特殊字符的时候 比如下面这个地址.实际访问地址不正确,参数丢失问题 curl -o kspf.jpeg https:// ...

  3. c语言 如何让程序等待一定的时间 sleep 头文件 delay,如何让C语言sleep()函数等待时间小于1秒?...

    sleep()函数大概只能精确到50ms左右,你用sleep(10)是肯定不行的,如果你要精确的定时的话可以使用QueryPerformanceFrequency()函数,用法为: LARGE_INT ...

  4. 计算机win7如何加快开机速度,加快win7开机速度 让Win7系统加快开机速度小于30秒的方法...

    如今使用win7系统的用户越来越多了,win7是一个比较稳定的系统,但是有一个比较不好的就是,如果没有使用SSD硬盘的时候,开机速度就会比较慢,很多人对开机速度还是很关心的,那么要怎么加快win7开机 ...

  5. 微信支付curl出错及错误码解决方案

    关键字:微信支付 curl出错 错误码6 错误码7 错误码28 错误码52 错误码58 错误码60 错误码77  作者:方倍工作室 原文: http://www.cnblogs.com/txw1958 ...

  6. VMWare ubuntu虚拟机每次开机要等待1分30秒解决方案(A start job is running for dev-disk-by\x2duui...)(修改真实swap UUID)

    如图: 原因: 出现这个问题的原因是因为在给虚拟机进行扩容之后,虚拟机的swap分区的UUID号发生了变化,导致swap分区挂载失败,进而导致每次开启虚拟机时都会出现等待1分30秒的问题. 解决办法: ...

  7. 多长的企业视频最受欢迎?小于60秒

    资深多媒体技术咨询师Jan Ozer撰文,对企业视频托管服务商Vidyard的视频报告进行了解读,报告涉及用户喜欢观看视频的类型.喜欢视频的长度等.LiveVideoStack对文章进行摘译. 文 / ...

  8. 【资源下载】敬勇 - 一条执行时间小于1秒的 SQL 引发的性能问题

    1月13日周四晚,敬勇在云和恩墨大讲堂做了精彩的技术分享,以下为详细的内容整理: 敬勇 ACOUG, CSOUG 核心会员,Oracle Young Expert 某客户软件操作人员反应很慢不能操作, ...

  9. Mapper.xml中遇到大于号小于号问题解决方案

    前言:最近在Mapper.xml文件中编写SQL语句的过程中遇到了一个小问题,SQL在mysql里能这样用,我以为在项目里也一样,结果就是小于号在.xml里是不能用的会报错,如下SQL. #在数据库用 ...

  10. MySql(15)——Mysql在高并发情况下,防止库存超卖而小于0的解决方案

    本人上次做申领campaign的PHP后台时,因为项目上线后某些时段同时申领的人过多,导致一些专柜的存货为负数(<0),还好并发量不是特别大,只存在于小部分专柜而且一般都是-1的状况,没有造成特 ...

最新文章

  1. console.log(text)打印不出来的值,用console.log(text.length)却打印出来长度为1?
  2. 解决WebStorm中git出现的 Could not read from remote repository问题
  3. wcdma系统随机接入过程的流程图_WCDMA终端的随机接入过程的射频测试
  4. C++中如何表示2进制,8进制、16进制变量
  5. linux的cache过高的原因定位与解决echo 3 > /proc/sys/vm/drop_caches
  6. HDU4841 圆桌问题【约瑟夫环+模拟+STL】
  7. 软考难点—软件开发模型(借鉴)
  8. static 结构体_C++基础-static
  9. iPhone 开源游戏引擎
  10. EasyUI 1.5.1 美化主题大包 Insdep Theme 1.0.3 正式版已发布,开源下载
  11. MySQL查询数据详细
  12. 通过串口连接控制树莓派
  13. java文件ftp下载,java ftp下载文件夹内所有文件,java 下载ftp文件夹下所有文件
  14. 官方教你如何为centos 7.x 安装Broadcom无线网卡驱动
  15. 硬盘安装XP蓝屏,U盘安装XP提示INF file txtsetup……
  16. OpenStack必备基础知识
  17. linux扩展模式触摸屏,Ubuntu14.04下使用触摸屏以及笔记本扩展触摸屏设置方法
  18. 纯小白适合了解的3D游戏建模科普知识,通过培训能入行吗?
  19. 查看linux Mac地址
  20. 通达信 c java,通达信的c

热门文章

  1. 开源月刊(Open Source)
  2. 学会阅读英文计算机原著
  3. STM32CubeMX使用(一)之实现点灯点灯
  4. 华硕笔记本 X550JD4710HQ
  5. QT:QByteArray和QByteArray、char *(转)
  6. Linux下selinux简单梳理
  7. TCPIP三次握手详情
  8. RDP(远程桌面很慢) slow performance, Hyper-V,IPv4 Checksum offload
  9. Ext 介绍入门之 Templates(模板)
  10. 关系型数据库(八),数据库其他面试题