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

配置文件在正式服务器上的部署

Jun 06, 2016 pm 07:37 PM
服务器 正式 部署 配置文件

配置文件在正式服务器上的部署。 从文件服务器下载配置文件,备份并替换本地的配置文件,将配置文件压缩成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();
登录后复制
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何将Dnsmasq配置为DHCP中继服务器 如何将Dnsmasq配置为DHCP中继服务器 Mar 21, 2024 am 08:50 AM

DHCP中继的作用是将接收到的DHCP数据包转发到网络上的另一个DHCP服务器,即使这两个服务器位于不同的子网中。通过使用DHCP中继,您可以实现在网络中心部署一个集中式的DHCP服务器,并利用它为所有网络子网/VLAN动态分配IP地址。Dnsmasq是一种常用的DNS和DHCP协议服务器,可以配置为DHCP中继服务器,以帮助管理网络中的动态主机配置。在本文中,我们将向您展示如何将dnsmasq配置为DHCP中继服务器。内容主题:网络拓扑在DHCP中继上配置静态IP地址集中式DHCP服务器上的D

用PHP构建IP代理服务器的最佳实践指南 用PHP构建IP代理服务器的最佳实践指南 Mar 11, 2024 am 08:36 AM

在网络数据传输中,IP代理服务器扮演着重要的角色,能够帮助用户隐藏真实IP地址,保护隐私、提升访问速度等。在本篇文章中,将介绍如何用PHP构建IP代理服务器的最佳实践指南,并提供具体的代码示例。什么是IP代理服务器?IP代理服务器是一种位于用户与目标服务器之间的中间服务器,它充当用户与目标服务器之间的中转站,将用户的请求和响应进行转发。通过使用IP代理服务器

epic服务器离线进不了游戏怎么办?epic离线进不了游戏解决方法 epic服务器离线进不了游戏怎么办?epic离线进不了游戏解决方法 Mar 13, 2024 pm 04:40 PM

  epic服务器离线进不了游戏怎么办?这个问题想必很多小伙伴都有遇到过,出现了此提示就是导致正版的游戏无法启动,那么出现这个问题一般是网络和安全软件干扰导致的,那么应该怎么解决呢,本期小编就来和大伙分享解决方法,希望今日的软件教程可以帮助各位解决问题。  epic服务器离线进不了游戏怎么办:  1、很可能是被安全软件干扰了,将游戏平台和安全软件关闭在重启。  2、其次就是网络波动过大,尝试重启一次路由器,看看是否有效,如果条件可以的话,可以尝试使用5g移动网络来进行操作。  3、然后有可能是更

Yolov10:详解、部署、应用一站式齐全! Yolov10:详解、部署、应用一站式齐全! Jun 07, 2024 pm 12:05 PM

一、前言在过去的几年里,YOLOs由于其在计算成本和检测性能之间的有效平衡,已成为实时目标检测领域的主导范式。研究人员探索了YOLO的架构设计、优化目标、数据扩充策略等,取得了显着进展。同时,依赖非极大值抑制(NMS)进行后处理阻碍了YOLO的端到端部署,并对推理延迟产生不利影响。在YOLOs中,各种组件的设计缺乏全面彻底的检查,导致显着的计算冗余,限制了模型的能力。它提供了次优的效率,以及相对大的性能改进潜力。在这项工作中,目标是从后处理和模型架构两个方面进一步提高YOLO的性能效率边界。为此

win10用户配置文件在哪? Win10设置用户配置文件的方法 win10用户配置文件在哪? Win10设置用户配置文件的方法 Jun 25, 2024 pm 05:55 PM

最近有不少Win10系统的用户想要更改用户配置文件,但不清楚具体如何操作,本文将给大家带来Win10系统设置用户配置文件的操作方法吧!Win10如何设置用户配置文件1、首先,按下“Win+I”键打开设置界面,并点击进入到“系统”设置。2、接着,在打开的界面中,点击左侧的“关于”,再找到并点击其中的“高级系统设置”。3、然后,在弹出的窗口中,切换到“”选项栏,并点击下方“用户配

如何在服务器上安装 PHP FFmpeg 扩展? 如何在服务器上安装 PHP FFmpeg 扩展? Mar 28, 2024 pm 02:39 PM

如何在服务器上安装PHPFFmpeg扩展?在服务器上安装PHPFFmpeg扩展可以帮助我们在PHP项目中处理音视频文件,实现音视频文件的编解码、剪辑、处理等功能。本文将介绍如何在服务器上安装PHPFFmpeg扩展,以及具体的代码示例。首先,我们需要确保服务器上已经安装了PHP以及FFmpeg。如果没有安装FFmpeg,可以按照以下步骤安装FFmpe

在Ubuntu上安装Helm 在Ubuntu上安装Helm Mar 20, 2024 pm 06:41 PM

Helm是Kubernetes的一个重要组件,它通过将配置文件捆绑到一个称为HelmChart的包中来简化Kubernetes应用程序的部署。这种方法使得更新单个配置文件比修改多个文件更加便捷。借助Helm,用户可以轻松地部署Kubernetes应用程序,简化了整个部署过程,提高了效率。在本指南中,我将介绍在Ubuntu上实现Helm的不同方法。请注意:以下指南中的命令适用于Ubuntu22.04以及所有Ubuntu版本和基于Debian的发行版。这些命令经过测试,应该在您的系统上正常运行。在U

Golang 服务器的优势及效用详解 Golang 服务器的优势及效用详解 Mar 20, 2024 pm 01:51 PM

Golang是一种由Google开发的开源编程语言,它具有高效、快速、强大的特点,被广泛应用在云计算、网络编程、大数据处理等领域。作为一种强类型、静态语言,Golang在构建服务器端应用程序时具有诸多优势。本文将详细解析Golang服务器的优势及效用,并通过具体的代码示例来说明其强大之处。1.高性能Golang的编译器能够将代码编译成为本地代

See all articles