thinkphp 应用 迁移至 sae 记录

公司项目打算迁移至sina sae 特把迁移日志记录下,其中需要修改一些thinkphp的文件

代码部署之后

修改 memcache 实例化方法

$mem = memcache_init();

修改mysql配置

//'配置项'=>'配置值'        'APP_DEBUG' => true,        'APP_GROUP_LIST' => 'Api,Home,Admin,m',        'DEFAULT_GROUP'  => 'Home',        'DB_TYPE'   => 'mysqli',        'DB_HOST'   => SAE_MYSQL_HOST_M,        'DB_NAME'   => SAE_MYSQL_DB,        'DB_USER'   => SAE_MYSQL_USER,        'DB_PWD'    => SAE_MYSQL_PASS,        'DB_PORT'   => SAE_MYSQL_PORT,        'DB_PREFIX' => 'i_',

修改缓存功能

修改文件/ThinkPHP/Lib/Think/Template/ThinkTemplate.class.php

 
  
public function loadTemplate ( $tmplTemplateFile = '' )
{
$s = new SaeStorage();
$s -> _accessKey = '* ' ;
$s -> _secretKey = '*** ' ;

if ( empty ( $tmplTemplateFile )) $tmplTemplateFile = $this -> config[ ' default_tmpl ' ];
if ( ! is_file ( $tmplTemplateFile )){
$tmplTemplateFile = dirname ( $this -> config[ ' default_tmpl ' ]) . ' / ' . $tmplTemplateFile . $this -> config[ ' template_suffix ' ];
if ( ! is_file ( $tmplTemplateFile ))
throw_exception(L(
' _TEMPLATE_NOT_EXIST_ ' ));
}
$this -> templateFile = $tmplTemplateFile ;

// 根据模版文件名定位缓存文件
$tmplCacheFile = md5 ( $tmplTemplateFile ) . $this -> config[ ' cache_suffix ' ];
$tmplContent = '' ;
// 检查Cache文件是否需要更新

if ( ! $this -> checkCache( $tmplTemplateFile )) {
// 需要更新模版 读出原模板内容
$tmplContent = file_get_contents ( $tmplTemplateFile );
// 编译模板内容
$tmplContent = $this -> compiler( $tmplContent );
// 检测分组目录
//if(!is_dir($this->config['cache_path']))
// mk_dir($this->config['cache_path']);
//重写Cache文件


if ( false === $s -> write( ' cache ' , $tmplCacheFile , $tmplContent ))
throw_exception(L(
' _CACHE_WRITE_ERROR_ ' ));
}

return ' http://hxpai-cache.stor.sinaapp.com/ ' . $tmplCacheFile ;
}

 
  


 
  
protected function checkCache( $tmplTemplateFile )
{
$s = new SaeStorage();
$s -> _accessKey = ' jn4wlon5xl ' ;
$s -> _secretKey = ' y45w55mwyx0m1k3w00xz20jymz3xikjlxw21xiy1 ' ;

if ( ! $this -> config[ ' tmpl_cache ' ]) // 优先对配置检测
return false ;

$tmplCacheFile = md5 ( $tmplTemplateFile ) . $this -> config[ ' cache_suffix ' ];
$fileinfo = $s -> getAttr( ' cache ' , $tmplCacheFile );

if ( ! $s -> fileExists( ' cache ' , $tmplCacheFile )){
return false ;
}
elseif ( filemtime ( $tmplTemplateFile ) > $fileinfo [ ' datetime ' ]) {
// 模板文件如果有更新则缓存需要更新
return false ;
}
elseif ( $this -> config[ ' cache_time ' ] != - 1 && time () > $fileinfo [ ' datetime ' ] + $this -> config[ ' cache_time ' ]) {
// 缓存是否在有效期
return false ;
}
// 缓存有效
return true ;
}

修改 runtime 文件 主要是生成 runtime 文件

 
  
function build_runtime() {
$mem = memcache_init();
// 加载常量定义文件
require THINK_PATH . ' /Common/defines.php ' ;
// 加载路径定义文件
require defined ( ' PATH_DEFINE_FILE ' ) ? PATH_DEFINE_FILE : THINK_PATH . ' /Common/paths.php ' ;
// 读取核心编译文件列表
if ( is_file (CONFIG_PATH . ' core.php ' )) {
// 加载项目自定义的核心编译文件列表
$list = include CONFIG_PATH . ' core.php ' ;
}
elseif ( defined ( ' THINK_MODE ' )) {
// 根据设置的运行模式加载不同的核心编译文件
$list = include THINK_PATH . ' /Mode/ ' . strtolower (THINK_MODE) . ' .php ' ;
}
else {
// 默认核心
$list = include THINK_PATH . ' /Common/core.php ' ;
}
// 加载兼容函数
if ( version_compare ( PHP_VERSION , ' 5.2.0 ' , ' < ' ) )
$list [] = THINK_PATH . ' /Common/compat.php ' ;
// 加载核心编译文件列表
foreach ( $list as $key => $file ){
if ( is_file ( $file )) require $file ;
}
// 检查项目目录结构 如果不存在则自动创建
if ( ! is_dir (RUNTIME_PATH)) {
// 创建项目目录结构
build_app_dir();
}
else {
// 检查缓存目录
//check_runtime();

}
// 生成核心编译缓存 去掉文件空白以减少大小
if ( ! defined ( ' NO_CACHE_RUNTIME ' )) {
$compile = defined ( ' RUNTIME_ALLINONE ' );
$content = compile(THINK_PATH . ' /Common/defines.php ' , $compile );
$content .= compile( defined ( ' PATH_DEFINE_FILE ' ) ? PATH_DEFINE_FILE : THINK_PATH . ' /Common/paths.php ' , $compile );
foreach ( $list as $file ){
$content .= compile( $file , $compile );
}
$runtime = defined ( ' THINK_MODE ' ) ? ' ~ ' . strtolower (THINK_MODE) . ' _runtime.php ' : ' ~runtime.php ' ;
if ( defined ( ' STRIP_RUNTIME_SPACE ' ) && STRIP_RUNTIME_SPACE == false ) {
$mem -> set(RUNTIME_PATH . $runtime , ' <?php ' . $content );
}
else {
$mem -> set(RUNTIME_PATH . $runtime , strip_whitespace( ' <?php ' . $content ));
}
unset ( $content );
}
}

修改  config.yaml 代替 .htaccess

name: hxpai

version: 1

handle:  - rewrite: if(!is_dir() && !is_file() && path~"^(.*)$") goto "index.php/$1"

一般应用 这样就可以了

接下来修改 上传类 用于需要上传图片的应用

修改 UploadFile.class.php

修改函数 save

  增加

      $s = new SaeStorage();       

  $s->_accessKey = '';       

  $s->_secretKey = '';

去掉同名验证 我同名验证用的其他方法 保证不会重名

首先 传图片的时候 增加

            $upload->fullstorage = 'avatarfull';           

    $upload->thumbstorage = 'avatarthumb';

参数

修改 UploadFile.class.php

添加    public $fullstorage;    

  public $thumbstorage;

修改 

 
  
private function save( $file )
{
$s = new SaeStorage();
$s -> _accessKey = ' jn4wlon5xl ' ;
$s -> _secretKey = ' y45w55mwyx0m1k3w00xz20jymz3xikjlxw21xiy1 ' ;
$filename = $file [ ' savepath ' ] . $file [ ' savename ' ];

// 如果是图像文件 检测文件格式
if ( in_array ( strtolower ( $file [ ' extension ' ]) , array ( ' gif ' , ' jpg ' , ' jpeg ' , ' bmp ' , ' png ' , ' swf ' )) && false === getimagesize ( $file [ ' tmp_name ' ])) {
$this -> error = ' 非法图像文件 ' ;
return false ;
}

// 图片上传
$sinasavename = $s -> upload( $this -> fullstorage , $file [ ' savename ' ] , $file [ ' tmp_name ' ]);

// 缩略图生成
if ( $this -> thumb) {
$img = new SaeImage();
$img -> setData( file_get_contents ( $file [ ' tmp_name ' ] ) );
$img -> resize( 160 , 160 ); // 等比缩放到200宽
$new_data = $img -> exec (); // 执行处理并返回处理后的二进制数据
//echo file_get_contents($new_data);

$sinasavename = $s -> write( $this -> thumbstorage , $file [ ' savename ' ] , $new_data );

unlink ( $file [ ' tmp_name ' ]);
}
if ( $this -> zipImags) {
// TODO 对图片压缩包在线解压
}
return true ;
}

接下来把图片同步至新浪微博,和qq微博的上传地址修改

最后把图片文件批量上传至storage

ok 大功告成啦 哈哈

转载于:https://www.cnblogs.com/wangpengfei/archive/2011/05/25/2056766.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值