ThinkPHP 3.2版本以上支持直接将项目文件夹移植到SAE环境中即可
请在SAE中开启MYSQL服务、MEMCACHE服务、STORAGE服务(注意必须开启MEMCACHE服务才可正常运作)
1、隐藏入口文件index.php
因为SAE不支持.htaccess文件,可以在项目的根目录建立config.yaml文件,写入下面的代码,即可隐藏入口文件
2、数据库连接
在SAE中创建MYSQL数据库,在ThinkPHP的配置文件config.php中添加如下代码,连接数据库
3、上传文件(图片)
在SAE中开启STORAGE服务,创建一个domain用于存放上传的文件
例子:
<?php //SAE环境下,上传图片 $files = $FILES['fruit_img']; $name = 'fruit-'.time().'.jpg'; $form_data = $files['tmp_name']; $s2 = new \SaeStorage(); $img = new \SaeImage(); $img_data = file_get_contents($form_data); $img->setData($img_data); $img->resize(200,200); //图片缩放为200*200 $img->improve(); //提高图片质量的函数 $new_data = $img->exec(); //执行处理并返回二进制数据 $s2->write('fruitimg',$name,$new_data); //保存至名为fruitimg的SaeStorage中 $url = $s2->getUrl('fruitimg',$name); //从SaeStorage中获取图片链接 //将该图片的链接地址$url保存至数据库,直接调用即可 //注意,如果提示not find SaeStorage()或者SaeImage(),请确认是否加了\ ?>
4、IO操作
出于安全考虑,SAE限制了本地的IO操作,可以使用TmpFS功能,但其生命周期同于PHP请求,也就是当PHP请求完成时,所有写入TmpFS的临时文件都会被销毁,TmpFS只是本地临时文件,不是共享存储
解决办法:可以使用SAE提供的Wrappers(使用前必须开启KVDB服务)
例子:
保存每个访问用户的时间戳
<?php //这里的information.txt相当于一个键值 $file = "saekv://information.txt"; if(!file_exists($file)){ file_put_contents($file,time()); }else{ $n = file_get_contents($file)."&".time(); file_put_contents($file,$n); } echo file_get_contents($file); //删除该文件(使用SAE提供的KVDB数据库删除方式) $kv = new \SaeKV(); $kv->init(); if($kv->delete('information.txt')){ echo "删除成功"; }else{ echo "删除失败"; } ?>
参考地址:
http://document.thinkphp.cn/manual_3_2.html#sae
http://www.sinacloud.com/doc/sae/php/index.html