PHP检查更新加载本地版本号并解压覆盖
<?php
error_reporting(0);
ob_implicit_flush(true);
$begin = microtime(true);
//检查更新,加载本地版本号
$config = require(__DIR__ . '/config.php');
$server = 'https://www.bang4.cn';
ob_flush();
$versions = json_decode(file_get_contents($server), true);
if (!isset($versions[$config['version']])) {
echo '当前已是最新版本!';
} else {
echo '当前版本:<b>', $config['version'], '</b> 服务器版本:<b>',
$versions[$config['version']]['version'], '</b><br/>';
ob_flush();
//开始下载
$remote_fp = fopen($versions[$config['version']]['url'], 'rb');
if(!is_dir(__DIR__.'/tmp')) mkdir(__DIR__.'/tmp');
$tmp = __DIR__ . '/tmp/' . date('YmdHis') . '.zip';
$local_fp = fopen($tmp, 'wb');
echo '开始下载...<br/>';
ob_flush();
while (!feof($remote_fp)) {
fwrite($local_fp, fread($remote_fp, 512));
}
fclose($remote_fp);
fclose($local_fp);
echo '下载完成,准备解压<br/>';
ob_flush();
require(__DIR__ . '/Zip.php');
$zip = new Zip();
$zip->extra($tmp, __DIR__);
echo '解压完成,准备删除临时文件<br/>';
ob_flush();
//删除补丁包
unlink($tmp);
echo '临时文件删除完毕<br/>';
ob_flush();
//更新本地版本号
$content = file_get_contents(__DIR__.'/config.php');
$content = str_replace($config['version'],$versions[$config['version']]['version'],$content);
file_put_contents(__DIR__.'/config.php',$content);
echo '更新完成!耗时',microtime(true) - $begin,'秒<br/>';
ob_flush();
ob_end_clean();
exit();
}
PHP检查更新加载本地版本号并解压覆盖的更多相关文章
- seo网页加速技术,预加载 DNS Prefetching 详解
seo网页加速技术,预加载 DNS Prefetching 详解 DNS Prefetching 是什么 : DNS 是什么-- Domain Name System,域名系统,作为域名和IP地址相互 ...
- Mysql加载本地CSV文件
Mysql加载本地CSV文件 1.系统环境 系统版本:Win10 64位 Mysql版本: 8.0.15 MySQL Community Server - GPL Mysql Workbench版本: ...
- #iOS问题记录#动态Html加载本地CSS和JS文件
所谓动态Html,指代码中组合生成的html字符串: 若需要加载本地CSS,图片,JS文件,则, 1,需要文件的全路径: 2,需要"file:///"标志: 例如: //获取文件全 ...
- 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图
[源码下载] 重新想象 Windows 8.1 Store Apps (81) - 控件增强: WebView 之加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Co ...
- iOS --- UIWebView的加载本地数据的三种方式
UIWebView是IOS内置的浏览器,可以浏览网页,打开文档 html/htm pdf docx txt等格式的文件. safari浏览器就是通过UIWebView做的. 服务器将MIM ...
- UIWebView加载本地html文件
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(, , KScreenWidth, KScreenHeight-)]; ...
- 填补Resources和WWW加载本地资源的坑
总的来说Resources和WWW加载本地资源坑比较多,大多与路径有关. 下面代码构成了一个路径的预读模块: 此模块主要解决的坑是:Resources或WWW加载本地的文件夹中的多个文件时,无法获取文 ...
- viewpage listview gridview加载本地大图多图OOM处理办法
很少上博客园写东西了. 最近在写公司项目,由于需要加载本地相册通过viewpager方式来加载, 最后发现直接进入界面就OOM了. 经过几天的整理最终搞定. 现在将加载本地和加载网络图片的缓存工具类贴 ...
- cdnjquery加载失败加载本地
<script type="text/javascript" src="//libs.baidu.com/jquery/1.7.2/jquery.min.js&qu ...
- 360chrome,google chrome浏览器使用jquery.ajax加载本地html文件
使用360chrome和google chrome浏览器加载本地html文件时,会报错,提示: XMLHttpRequest cannot load file:///Y:/jswg/code/html ...
随机推荐
- python之sys库
sys --- 系统相关的参数和函数 该模块提供了一些变量和函数.这些变量可能被解释器使用,也可能由解释器提供.这些函数会影响解释器.本模块总是可用的. sys.abiflags 在POSIX系统上, ...
- 基于SqlSugar的开发框架循序渐进介绍(25)-- 基于SignalR实现多端的消息通讯
基于ASP.NET Core SignalR 可以实现客户端和服务器之间进行即时通信.本篇随笔介绍一些SignalR的基础知识,以及结合对SqlSugar的开发框架的支持,实现SignalR的多端处理 ...
- 详解事务模式和Lua脚本,带你吃透Redis 事务
摘要:Redis事务包含两种模式:事务模式和Lua脚本. 本文分享自华为云社区<一文讲透 Redis 事务>,作者: 勇哥java实战分享. 准确的讲,Redis事务包含两种模式:事务模式 ...
- MySQL匿名空用户名处理
问题描述:公司漏扫发现数据库内出现空用户名及密码,需要对这些用户进行整改 1.首先出现了疑问,这些空的用户名是怎么出现的,而且不附带密码. 2.可以手动这样创建这样的用户名和密码形式么. 3.如果能这 ...
- DG修复:清理归档配置归档清理脚本
问题描述:DG同步断了十天,发现FRA归档盘符满了.需要清理下,重新增量恢复DG Error 12528 received logging on to the standby FAL[client, ...
- Visual Studio Code 常见的配置、常用好用插件以及【vsCode 开发相应项目推荐安装的插件】
一.VsCode 常见的配置 1.取消更新 把插件的更新也一起取消了 2.设置编码为utf-8:默认就是了,不用设置了 3.设置常用的开发字体:Consolas, 默认就是了,不用设置了 字体对开发也 ...
- Django框架——手写web框架、wsgiref模块、动静态网页、jinja2模块、主流web框架、Django简介、基本使用、app概念、目录结构、三板斧
web应用 '''通过浏览器访问的应用程序!!!''' 1.两种模式c/s b/s B/S:browser---------------->server 2.web应用程序的有点 2.1 只需要 ...
- [C++基础入门] 1、C++初识
文章目录 1 C++初识 1.1 第一个C++程序 1.1.1 创建项目 1.1.2 创建文件 1.1.3 编写代码 1.1.4 运行程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1 ...
- IPS 和 IDS
IPS/IDS 什么是IPS和IDS IDS/IPS是检测和防止对网络服务器进行未授权的访问的系统.有许多产品同时有IDS和IPS的作用,作为加强企业信息安全所必须的系统 什么是IDS(Intrusi ...
- Linux xfs文件系统stat命令Birth字段为空的原因探究
在Linux平台找出某个目录下创建时间最早的文件,测试验证脚本结果是否准确的过程中发现一个很有意思的现象,stat命令在一些平台下Birth字段有值,而在一些平台则为空值,如下所示: RHEL 8.7 ...