SAE封装的fetchurl也是根据CURL重新封装的,但有BUG,例如如果访问的页面有跳转时,COOKIES是不能能跟随的,多以导致很多登录的页面无法实现登录。
本来打算用CURL重新封装,但为了节省时间还是,还是在SAE的fetchurl的基础上稍微修改吧...
mjj520 发表于 2012-6-2 09:14 
唉 cpu超级耗芸豆的
查了下开发文档,fetchurl原来是不算CPU的,是我误导了大家。
这里稍微说明,$url:访问路径;$post_fields:post的数组;$cookies_file:cookies文件存放的位置。 由于SAE的CURL估计与应用是不同一个层理运行的,所以cookies_file就失效了,SAE封装的fetchurl也是根据CURL重新封装的,但有BUG,例如如果访问的页面有跳转时,COOKIES是不能能跟随的,多以导致很多登录的页面无法实现登录。 本来打算用CURL重新封装,但为了节省时间还是,还是在SAE的fetchurl的基础上稍微修改吧,虽然这样浪费CPU资源,但估计不多可以忽略,就让CPU飞一会吧。 有些童鞋会问为什么非要用cookies_file,因为cookies跨页不能做跨页传递,而且也不能长时间保存,保存cookies_file可以跨页调用,也已长时间保存,设置可以跨应用,所以还是用cookies_file吧。
$cookie_file ='saestor://'.$DOMAIN/cookies.txt'; 或者 $cookie_file ='saemc://cookies.txt';
切记不可以用本机路径。因为SAE不支持本地IO,上面的要打开stroge,下面的要打开memcahe,你懂的。
- function new_fetch($url,$post_fields,$cookies_file){
- $f = new SaeFetchurl();
- if($post_fields==''){
- $f->setMethod('GET');
- }else{
- $f->setMethod('POST');
- }
- $f->setAllowRedirect(false);
- $f->setPostData($post_fields);
- $cookies=unserialize(file_get_contents($cookies_file));
- $f->setCookies($cookies);
- $content=$f->fetch($url);
- $cookies=mkcookies($cookies,$f->responseCookies());
- file_put_contents($cookies_file,serialize($cookies));
- $headers=$f->responseHeaders();
- $location=$headers['Location'];
- if($location<>''){
- $url=$location;
- $content=new_fetch($url,'',$cookies_file);
- }
- return $content;
- }
再附上mkcookies的函数,也很无奈,fetchurl的responseCookies也太坑爹了,就算参数设置FALSE都还是不认识什么是COOKIE,返回些垃圾,只要重新处理下,并且模拟下浏览器对cookie的操作。
- function mkcookies($cookies,$newcookies){
- foreach($newcookies as $cookie){
- foreach($cookie as $key=>$value){
- $cookies[$key]=$value;
- break;
- }
- }
- return $cookies;
- }
以上表述不专业,请各位童鞋指教。
|
|
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架