search
Homephp教程php手册配置文件在正式服务器上的部署

配置文件在正式服务器上的部署。 从文件服务器下载配置文件,备份并替换本地的配置文件,将配置文件压缩成zip格式 无 ?phpheader("Content-Type:text/html;charset=utf-8");include 'tz.php';/** * 执行配置文件的压缩 * Created by PhpStorm. * User: saint

配置文件在正式服务器上的部署。
从文件服务器下载配置文件,备份并替换本地的配置文件,将配置文件压缩成zip格式
<?php
header("Content-Type:text/html;charset=utf-8");
include 'tz.php';
/**
 * 执行配置文件的压缩
 * Created by PhpStorm.
 * User: saint
 * Date: 2015/3/18
 * Time: 14:25
 */
if(!defined("SYSTEM_PATH")) 	define("SYSTEM_PATH",	'/data/wwwroot/static/webroot');

class Compress
{
    /**
     * @var array 这里是需要处理的配置文件
     */
    public $cfg_files = array(
        'DEMO1Config.json', #
    );

    /**
     * @var string 文件服务器地址
     */
    public $file_server = '';

    public $cfg_path = '';

    public $temp_path = '';

    public $zip_file = '';

    /**
     * 环境初始化
     */
    public function _InitEnv()
    {
        $this->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 '<p>生成压缩文件成功,本次耗时:' . $limit . 's</p>';
        echo '<p>开始替换原来的配置文件</p>';

        $this->replaceFiles();

        // 插入数据库


        echo '<p>替换完毕</p>';

    }

    // 替换原来的文件
    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();
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Atom editor mac version download

Atom editor mac version download

The most popular open source editor