Home >Backend Development >PHP Tutorial >sae的curl限制可否突破
sae的curl限制能否突破?
我先说下我的情况:
curl到国外的web service上面,发送数据,处理后,再返回数据。
之前使用了美国空间,香港空间,但是总不满意,无法满足国内各地区的快速访问。
所以我现在放到了sae上面运行,但是sae有很多限制的,比如curl的限制如下:
connect_timeout 5秒
send_timeout 15秒
read_timeout 20秒
抓取文件大小 8MB
禁用头,这些头用户无法修改 Content-Length、Host、Vary、Via、X-Forwarded-For、FetchUrl、AccessKey、TimeStamp、Signature、AllowTruncated、ConnectTimeout、SendTimeout、ReadTimeout
目前就是第一条把我给限制住了,后面的限制对我没有影响。
正是由于他的connect_timeout 5秒 限制,导致我的curl应用经常返回502/504错误提示。
这个出错比例大概在3%左右,也就是运行100次,就会出错3次,后来我将curl里的网址由https换成http,这样出错概率降低了不少,但还是存在,测试在1%左右。
对于结果我还是不满意。因为我的curl程序在其他地方(国内三家机房测试)运行都没有出现过错误。
当然我也给sae提出建议,甚至要求升级成付费用户,都没有回复。
惟一的一个管理员说跟我要了curl的网址说帮我找台机器测试看看是不是有这回事。
可能有人说你为什么要在sae这棵树上吊死?
说实话我看中sae的惟一优势是他们是5线机房,国内大部分地区的用户访问速度非常不错的。再说我申请通过开发者认证,每个月的云豆应该足够使用了。
现在似乎有三种选择:
1.继续给sae建议,让他们修改限制参数
2.优化代码?我实在想不出如何优化了
3.放弃sae,这不是我最终想要的结果
我的curl代码是这样的:
#POST方法<br /> $curl = curl_init($url);<br /> curl_setopt( $curl, CURLOPT_POST, 1 );<br /> curl_setopt( $curl, CURLOPT_POSTFIELDS, $data );<br /> curl_setopt( $curl, CURLOPT_HEADER, 0 );<br /> curl_setopt( $curl, CURLOPT_RETURNTRANSFER , 1 );<br /> $response = curl_exec($curl);<br /><br /> #GET方法<br /> $curl = curl_init($url);<br /> curl_setopt( $curl, CURLOPT_GET, 1 );<br /> curl_setopt( $curl, CURLOPT_GETFIELDS);<br /> curl_setopt( $curl, CURLOPT_HEADER, 0 ); <br /> curl_setopt( $curl, CURLOPT_RETURNTRANSFER , 1 );<br /> $response = curl_exec($curl);