ThinkPHP项目在SAE下的部署

来源:互联网 发布:淘宝一元换购怎么做 编辑:程序博客网 时间:2024/05/01 09:39

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 0
原创粉丝点击