板几步让式和框运行在SAE上

2012 年 12 月 5 日8410

   

在本地环境下运行的好好的代码为什么放上SAE就各种悲催呢?其实只需要板的做好这几件事,式和框就能够顺利运行在SAE上,还能比原来运行的更牛X

以下是我在实际使用SAE上遇到的问题,跟大家分享分享

一没有写权限

我的框架放上SAE遇上的第一个问题就是没有写权限,自己弄的各种缓存,smarty,图片处理…全部杯具…

1.解决smarty

他的解决方案四处都是,说来说去就是将缓存设置在memcache里就OK了

PHP代码

    "Calibri">$this-> template_dir = mioCfg_tplURL;

    if(mioCfg_MioSae == true){

    $this-> compile_dir ='saemc://smarty_c/';

    $this-> cache_dir ='saemc://smarty_cache/';

    }else{

    $this-> compile_dir = mioCfg_tplURL.'temp/smarty_c/';

    $this-> cache_dir = mioCfg_tplURL.'temp/smarty_cache/';

    }

2.解决数据库表缓存和其他缓存

解决方案仍然很板,不写在目录里,写memcache,既板又效率!

PHP代码

    "Calibri">foreach($arras$val){

    $files[]=$val['Field'];

    if($val['Key']=='PRI')

    $files['_pk']=$val['Field'];

    if($val['Extra']=='auto_increment')

    $files['_auto']=$val['Field'];

    }

    if(mioCfg_MioSae){

    $table= md5($this->baseName.'_'.$this->table);

    _saemem::set($table, var_export($files,true));

    }else{

    $string="<?php \n return ".var_export($files,true)."\n?>";

    //写入数据表缓存

    file_put_contents($this->cacheURL,$string);

    }

3.解决图像处理中需要写文件的问题

SAE给我们提供了一个临时目录供我们临时存放文件,当确定要永久保存一个文件时,我们可以使用storage板高效的保存文件,连文件上传类都省了,呵呵

PHP代码

    "Calibri">$r= saeSave::up( SAE_TMP_PATH.'/'.$filename,'./drcode_cache/'.$filename);

    if(emptyempty($r))

    _err::show('图片写入失败','r=false');

    }

    $fileUrl= saeSave::getURL('./drcode_cache/'.$filename);

二发邮件,计划任务等问题

其实SAE都为我们想到了,在SAE上干这些事,比原来更板

如计划任务:

- description: haha

url: test/1.php

schedule: */10 * * * *

三saetv2.ex.class.php的问题

如果你也爱写微博小应用,有一点需要注意…

SAE为我们准备好了saetv2.ex.class.php,所以你new出来的weibo类,并不是你自己辛辛苦苦敲出来的weibo类哦!

如果你想使用自己的saetv2.ex.class.php该怎么办呢?很板改掉类名就OK了

分享个我自己的saetv2.ex.class.php吧~,跟google上面的相比多了如下功能:

(一些功能虽然实现但未测试哈,不好使请自己修改 别说我忽悠你)

新增

friends_timeline_ids() statuses/friends_timeline/ids 获取当前登录用户及其所关注用户的最新微博的ID

get_user_timeline_ids_by_id() statuses/user_timeline/ids 根据uid获取用户发布的微博的ID

get_user_timeline_ids_by_name()statuses/user_timeline/ids 根据昵称获取用户发布的微博的ID

repost_timeline_ids() statuses/repost_timeline/ids 获取一条原创微博的最新转发微博的ID

mentions_ids() statuses/mentions/ids 获取@当前用户的最新微博的ID

bilateral_timeline() statuses/bilateral_timeline 获取双向关注用户的最新微博

statuses_count() statuses/count 批量获取指定微博的转发数评论数

statuses_go() statuses/go 根据ID跳转到单条微博页

user_count() users/counts 批量获取用户的粉丝数、关注数、微博数

users_show_rank() users/show_rank 获取用户等级信息

favorites_ids() favorites/ids 获取当前用户的收藏列表的ID

favorites_by_tags_ids()favorites/by_tags/ids 获取当前用户某个标签下的收藏列表的ID

更新

update() statuses/update 发布一条微博信息

增加参数

//visible false int 微博的可见性,0:所有人能看,1:仅自己可见,2:密友可见,3:指定分组可见,默认为0。

//list_id false string 微博的保护投递指定分组ID,只有当visible参数为3时生效且必选。

upload() statuses/upload 上传图片并发布一条微博

增加参数

//visible false int 微博的可见性,0:所有人能看,1:仅自己可见,2:密友可见,3:指定分组可见,默认为0。

//list_id false string 微博的保护投递指定分组ID,只有当visible参数为3时生效且必选。

//annotations false string 元数据,主要是为了方便第三方应用记录一些适合于自己使用的信息,每条微博可以包含一个或者多个元数据,必须以json字串的形式提交,字串长度不超过512个字符,具体内容可以自定

LINE 1259 改为:

return $this->oauth->post( 'statuses/upload_url_text', $params, false );

0 0