ThinkPHP项目在SAE下的部署

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值