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 "删除失败";
}
?>
参考地址: