CURL超时处理
一般会设置一个超时时间1S,就是说如果php那边在1S内没有返回给urlserver的话就忽略掉该请求,及不阻塞等待返回了,直接处理下面的操作。
现在php那边有时候会卡,这样一卡就无法再1S内返回消息给服务器
由于urlserver只是忽略了该连接上的请求消息,并不是断开了,所以php那边无法判断消息是否是正常发成功了还是如何
所以玩家积分消耗了道具没拿到的兑换问题无法通过php捕获服务器没有收到来做。
int connectURL(char * strUrl, char ** strResult)
{
*strResult = ;
if (strUrl == )
{
return ;
} CURL * pCurl;
CURLcode res; int nReturn = ;
pCurl = curl_easy_init(); // init pCurl
if (pCurl == NULL)
{
return nReturn;
}
res = curl_easy_setopt(pCurl, CURLOPT_ERRORBUFFER, errorBuffer); // set error buffer
if (res != CURLE_OK)
{
goto error_return;
}
res = curl_easy_setopt(pCurl, CURLOPT_TIMEOUT, ); // set time out s
if (res != CURLE_OK)
{
goto error_return;
}
res = curl_easy_setopt(pCurl, CURLOPT_URL, strUrl); // set url
if (res != CURLE_OK)
{
goto error_return;
} res = curl_easy_setopt(pCurl, CURLOPT_WRITEFUNCTION, writer); // set write func
if (res != CURLE_OK)
{
goto error_return;
}
p_buffer.current_length = ;
if (p_buffer.cstring)
p_buffer.cstring[] = ;
res = curl_easy_setopt(pCurl, CURLOPT_WRITEDATA, &p_buffer); // set result buffer
if (res != CURLE_OK)
{
goto error_return;
}
res = curl_easy_perform(pCurl); // run
if (res != CURLE_OK)
{
goto error_return;
}
else
{
nReturn = ;
*strResult = p_buffer.cstring;
} error_return: if (nReturn == )
{
printf("[WARNING][%s][%d][%s]\n", __FUNCTION__, res, errorBuffer);
}
curl_easy_cleanup(pCurl); return nReturn;
}
CURL超时处理的更多相关文章
- 【ipv6惹的祸】curl 超时
偶然发现 最近在公司日志平台 总是可以看到很多关于php curl的错误信息 Operation timed out after 0 milliseconds with 0 out of 0 byte ...
- PHP curl超时问题
今天调试一个非常老的代码时 发现nginx服务器超时 改了下nginx配置 发现是后台脚本一直等待 排查到最后发现是curl 超时引起的等待 具体解决方案: curl_setopt( $this ...
- CURL超时时间设置
一次完整的http请求,一般包含三个步骤: 通过DNS把域名解析成IP 通过IP地址连接到目标主机 获取目标主机数据(1.给目标主机输出http请求头,以\r\n\r\n结尾:2.获取目标主机传过来的 ...
- curl 超时设置<转>
PHP cURL 的超时设置有两个 CURLOPT_CONNECTTIMEOUT 和 CURLOPT_TIMEOUT,他们的区别是: CURLOPT_CONNECTTIMEOUT 用来告诉 PHP 在 ...
- PHP cURL 超时设置 CURLOPT_CONNECTTIMEOUT 和 CURLOPT_TIMEOUT 的区别
PHP cURL 的超时设置有两个 CURLOPT_CONNECTTIMEOUT 和 CURLOPT_TIMEOUT,他们的区别是: CURLOPT_CONNECTTIMEOUT 用来告诉 PHP 在 ...
- curl 超时问题解决
curl -o /dev/null -s -w %{time_namelookup}---%{time_connect}---%{time_starttransfer}---%{time_total} ...
- php之curl设置超时实例
本文实例讲述了php中curl超时设置方法.分享给大家供大家参考.具体实现方法如下: 访问HTTP方式很多,可以使用curl, socket, file_get_contents() 等方法. 在访问 ...
- 本地服务CURL请求本地另一个服务API返回超时/或无返回
入职之后一直在忙,终于有时间整理一波最近踩到的坑. 起因: 项目是微服务架构,一个项目对外提供API,新的项目调用API获得数据.于是就在本地搭建了两个服务.配置了两个虚拟域名,指向两个项目,当然我本 ...
- 用curl做异步操作
class CurlPost { /** * @desc curl 请求提交数组 * */ public function execute($method, $url, $fields = '', $ ...
随机推荐
- 【TLD】标签库描述符
tld是taglib description 的缩写 定制标签拼图中的最后一块是TLD(标签库描述符)文件.创建的每个标签都必须在一个TLD文件中声明,而且这一文件还必须连同标签的Java处理器类一起 ...
- TOKEN+签名验证
TOKEN+签名验证 首先问大家一个问题,你在写开放的API接口时是如何保证数据的安全性的?先来看看有哪些安全性问题在开放的api接口中,我们通过http Post或者Get方式请求服务器的时候,会面 ...
- new 的用法
在C#中,new关键字有三种用法: 1.new 运算符,用于创建对象和调用构造函数. 2.new 修饰符,在用作修饰符时,new关键字可以显式隐藏从基类继承的成员. 3.new 约束 ,用于在泛型 ...
- vs2013下使用Assist X的破解方法
Assist X的破解下载:http://pan.baidu.com/s/1kTnDH23 密码:j9jp 01.安装,点击VA_X_Setup2042.exe 安装 02.破解 找到这样的目录:C: ...
- shell 练习
shell 练习 iii= ] do iii=$[$iii+] echo -n "$iii " done iii= ] do iii=$[$iii+] echo -n " ...
- XSS之学习误区分析
有段时间没写东西了, 最近看到zone里出现了很多“XSS怎么绕过某某符号的帖子”,觉得很多新手在寻找XSS时走进了一些误区,比如:专门想着怎么去“绕过”.这里做个总结,希望对大家有所帮助. 1. 误 ...
- hdu 4814 Golden Radio Base
详解见:http://blog.csdn.net/tri_integral/article/details/18666797 #include<cstdio> #include<cs ...
- linux下fflush(stdin)的使用问题
参考自linux下如何清空(刷新)stdin缓冲区 首先,fflush在C/C++/POSIX标准中只定义了处理输出流的行为,对于像stdin这种输入流,这是未定义行为undefined behavi ...
- C语言中随机数的生成
刚好在找这方面的资料,看到了一片不错的,就全文转过来了,省的我以后再找找不到. 在C语言中,可以通过rand函数得到一个“伪随机数”.这个数是一个整数,其值大于等于0且小于等于RAND_MAX.ran ...
- 这个帖子要收藏,以后用得着--python 实时获取子进程输出
在论坛上找到方法了,http://bbs.csdn.net/topics/340234292 http://blog.csdn.net/junshao90/article/details/821575 ...