公司项目打算迁移至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
{
$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 ;
}
{
$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 文件
$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;
修改
{
$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 大功告成啦 哈哈