图片功能
本地运行
SAE平台
缩略图
调用Image类库处理
自动使用SaeImage服务
验证码
调用Image类库处理
自动使用SaeVcode服务
你完全不用去学习怎么用SaeImage生成缩略图,也不用学习SaeVcode服务怎么用,你还是按照以前的方式使用ThinkPHP进行验证码和缩略图功能就可以了。
使用验证码的时候需要注意,在本地运行时验证码默认为数字形式,而在SAE上运行时验证码为数字+字母形式,而且存在字母大小写问题。如果你希望验证码区分大小写的话,需要将验证码统一转化为大写后进行匹配。
如:
if(md5(strtoupper($_POST['verify']))!=$_SESSION['verify']){ //验证错误处理代码 }
日志记录
SAE版ThinkPHP同样实现了生成系统日志功能,在本地运行会将日志记录到项目的项目的Runtime/Logs文件夹下,而在SAE上运行会将日志记录到SAE平台的日志中心:
?m=applog
请在搜索框选择中的下拉菜单处选择“debug”进行查看。
Trace信息
建议在开发程序时配置SHOW_PAGE_TRACE=>true 开启页面Trace信息。开启后,代码在SAE环境下运行时会显示一些SAE独有的Trace信息,有助于我们开发。你可能会到以下trace信息。
模板缓存:Trace信息名称为“[SAE]模板缓存”
在SAE下不会将模板编译缓存生成在Runtime目录下,而是存放在Memcache中。如果你想查看模板编译后的缓存,这里显示的就是模板缓存在Memcache中的缓存名称。你可以在SAE的memcache服务管理平台输入缓存名称得到缓存内容:
?m=mcmng
注:你看得的缓存内容,都是以一串数字开始,这数字和缓存内容无关,是记录的缓存生成时间。
核心缓存:Trace信息名称为“[SAE]核心缓存”
它记录的是核心编译缓存在Memcache中的缓存名称。如果你要获得核心编译缓存,比如我们要用核心编译缓存代替入口文件的时候。你可以在SAE的Memcache服务管理平台 输入这里记录的缓存名称获得。
注:
在开启调试时不会生成核心编译缓存,如果你获得核心编译缓存,请先关闭调试。
缓存内容开头的数字是记录的缓存生成时间,请将数字去掉后再作为入口文件。
静态缓存:Trace信息名称为“[SAE]静态缓存”
它记录了生成的静态缓存在KVDB中的名称。 目前SAE管理平台没有能直接输入KVDB名称获得内容的地方,大家需要自己写程序获取内容。
注:此Trace信息是在生成静态缓存的时候才会出现。如果你访问到的页面没有执行生成静态缓存的操作时,将不会有此条Trace信息。
隐藏index.php
SAE不支持.htaccess文件,但我们可以使用SAE提供的AppConfig服务实现伪静态。
在你项目的根目录建立config.yaml文件,代码为:
handle: - rewrite: if(!is_dir() && !is_file() && path~"^(.*)$") goto "index.php/$1"
这样就可以隐藏入口了。
比如这样的地址 也能通过
访问。
代码横跨性建议
SAE版ThinkPHP,是具有横跨性的,请不要破坏它的横跨性。比如,不要在项目配置文件中写和SAE数据库相关配置项。 自己写代码时,也要尽量做到横跨性,这样就可以让同样的代码既能在SAE下运行,也能在普通环境下运行, 使你在本地调试完后上传到SAE也不用修改任何代码就能运行。
下面是一些保持代码横跨性的建议:
(1)尽量少使用原生的SAE服务
能使用ThinkPHP自带函数替代的,尽量使用ThinkPHP自带函数。比如要使用SAE的KVDB服务,在ThinkPHP中完全可以用F函数代替。如果要使用SAE的Memcache服务,都使用S函数实现。 这样就不会导致你的代码从SAE转移到普通环境后性能很低。
个别SAE服务无法使用ThinkPHP自带函数代替的,才考虑使用原生的SAE服务。
(2)利用IS_SAE常量
ThinkPHP的SAE引擎增加了IS_SAE常量,能判断代码运行环境是普通环境还是SAE环境。如果你有段代码在普通环境和在SAE环境下实现方式不同,你可以使用IS_SAE进行判断后做不同处理或者加载不同的文件。
(3)利用SAE专有文件