Home >Backend Development >PHP Tutorial >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方法 $curl = curl_init($url); curl_setopt( $curl, CURLOPT_POST, 1 ); curl_setopt( $curl, CURLOPT_POSTFIELDS, $data ); curl_setopt( $curl, CURLOPT_HEADER, 0 ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER , 1 ); $response = curl_exec($curl); #GET方法 $curl = curl_init($url); curl_setopt( $curl, CURLOPT_GET, 1 ); curl_setopt( $curl, CURLOPT_GETFIELDS); curl_setopt( $curl, CURLOPT_HEADER, 0 ); curl_setopt( $curl, CURLOPT_RETURNTRANSFER , 1 ); $response = curl_exec($curl);
对于限制多多的机房我个人是扭头就走的.国内你一般只需要考虑电信网通(现在叫联通?)双线就行了,其他商用接入都是最后接到他们的网上。如果是用空间我还真没啥建议,我没用过任何一款空间,有经济基础的话似乎可以考虑美国的主机,或者香港的主机。
放弃sae 转战阿里云 然后回头来汇报一下情况好给我参考...哈哈哈
云豆够用吗?我不太相信...
至于curl的优化...这还能优化么...
你应该给出一些测试用的 url
你应该给出一些测试用的 url
引用 2 楼 的回复:
你应该给出一些测试用的 url
前天已经给sae的某位管理员了,一直没消息,我也不知道他试了没有,还是试了没回复我……
引用 4 楼 的回复:
引用 2 楼 的回复:
你应该给出一些测试用的 url
前天已经给sae的某位管理员了,一直没消息,我也不知道他试了没有,还是试了没回复我……
你连测试用的 url 都不肯给出,那你发这个帖子干什么?
噢,既然如此,那就无能为力了
lz试试fetchUrlhttp://apidoc.sinaapp.com/__filesource/fsource_sae__saefetchurl.class.php.html#a198