配置文件在正式服务器上的部署
程序员文章站
2022-05-16 21:51:16
...
配置文件在正式服务器上的部署。 从文件服务器下载配置文件,备份并替换本地的配置文件,将配置文件压缩成zip格式 无 ?phpheader("Content-Type:text/html;charset=utf-8");include 'tz.php';/** * 执行配置文件的压缩 * Created by PhpStorm. * User: saint
配置文件在正式服务器上的部署。
从文件服务器下载配置文件,备份并替换本地的配置文件,将配置文件压缩成zip格式
cfg_path = SYSTEM_PATH . '/metafile'; if(false == (is_dir( $this->cfg_path) && is_writable($this->cfg_path))) { throw new Exception('配置目录不存在或者不可写'); } $this->temp_path = SYSTEM_PATH . '/tmp'; if(false == (is_dir($this->temp_path) && is_writable($this->temp_path))) { throw new Exception('临时配置目录不存在或者不可写'); } if(function_exists('file_get_contents') == false) { throw new Exception('file_get_contents函数已禁用'); } if(function_exists('file_put_contents') == false) { throw new Exception('file_put_contents函数已禁用'); } if(class_exists('ZipArchive') == false) { throw new Exception('找不到ZipArchive'); } } public function downloadFiles() { $start = microtime(true); try { $this->_InitEnv(); } catch (Exception $e) { echo $e->getMessage(); exit; } $file_array = array(); // 依次从服务器上下载配置文件 foreach($this->cfg_files as $filename) { $tmp_file = $this->temp_path . '/' . $filename; $remote_file = $this->file_server . '/' . $filename; // 检查本地是否存在临时文件,如果有,则检查这个文件本地文件是否一致 $is_download = true; if(is_file($tmp_file)) { if(hash_file('sha256', $tmp_file) == hash_file('sha256', $remote_file)) { $is_download = false; } } if($is_download) { $contents = file_get_contents($remote_file); file_put_contents($tmp_file, $contents); } $file_array[] = $tmp_file; } // 对配置文件进行压缩 try { $this->compressFiles(); } catch (Exception $e) { echo $e->getMessage(); exit; } $limit = microtime(true) - $start; echo '生成压缩文件成功,本次耗时:' . $limit . 's
'; echo '开始替换原来的配置文件
'; $this->replaceFiles(); // 插入数据库 echo '替换完毕
'; } // 替换原来的文件 public function replaceFiles() { // 打开配置目录,创建备份目录 chdir($this->cfg_path); $backup_dir = 'cfg_bak_' . date('Ymd'); if(is_dir($backup_dir)) { rmdir($backup_dir); } mkdir($backup_dir, 0777); array_push($this->cfg_files, $this->zip_file); foreach($this->cfg_files as $file_name) { $dst_file = $backup_dir . '/' . $file_name; if(is_file($file_name)) { copy($file_name, $dst_file); } $new_file = $this->temp_path . '/' . $file_name; copy($new_file, $file_name); } } /** * 执行压缩文件 * @param $file_array * @throws Exception */ public function compressFiles() { chdir($this->temp_path); $this->zip_file = 'cfg_' . date(('Ymd')) . '.zip'; $zipClass = new ZipArchive(); $fp = $zipClass->open($this->zip_file, ZipArchive::CREATE); if($fp === true) { foreach($this->cfg_files as $file_name) { $zipClass->addFile($file_name); } } else { throw new Exception('压缩失败:' . $fp); } $zipClass->close(); } } $obj = new Compress(); $obj->downloadFiles();
推荐阅读
-
seaside在虚拟主机 webfactional 上的部署 Smalltalk框架Web
-
seaside在虚拟主机 webfactional 上的部署 Smalltalk框架Web
-
在一台服务器上安装两个或多个mysql的实现步骤
-
在linux或unix服务器上安装、使用MySQL的注意事项
-
在CentOS上安装搭建PHP+Apache+Mysql的服务器环境
-
查看linux服务器上mysql配置文件路径的方法
-
在linux或unix服务器上安装、使用MySQL的注意事项
-
在一台服务器上安装两个或多个mysql的实现步骤
-
查看linux服务器上mysql配置文件路径的方法
-
在Apache服务器上同时运行多个Django程序的方法