加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹰潭站长网 (https://www.0701zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP实现在线一键更新系统

发布时间:2022-10-17 07:01:01 所属栏目:PHP教程 来源:转载
导读: 1:开放一个接口,数据结构如下:
{
"msg": "true",
"status": 1,
"data": [
{
"name": "pylists云课堂",
"buildno": "1.0.3",
"update_time": 1583679270,

1:开放一个接口,数据结构如下:

{
	"msg": "true",
	"status": 1,
	"data": [
		{
			"name": "pylists云课堂",
			"buildno": "1.0.3",
			"update_time": 1583679270,
			"content": "",
			"filezip": "http://v.heimicms.com/fa84cef8d10f76eba043402aea925f4a.zip"
		}
	]
}

2:客户端代码请求拿到filezip文件地址,读取内容,写入根目录下的zip压缩文件

3:解压文件,覆盖即可

注意事项:

压缩包的目录结构需要一致,如果配个git或svn,实现全量更新和增量更新更好php云系统

目前压缩包需要单独打包上传到我们自己云端,供客服下载。

PHP代码段:

  public function appOnlineUpdate()
    {
        $PyDomain = config("PyDomain");
        $url       = $PyDomain . '/api/version/vlist';
        $updatearr = json_decode(curl_get($url), true)['data'][0];
        $filezip   = $updatearr['filezip'];
        $content   = curl_post($filezip);
        if (!$content) {
            ajaxmsg("源码更新包不存在", 0);
        }
        $file_path = APPUPDATE_PATH . 'appupdate.zip';
        if (file_exists($file_path)) {
            unlink($file_path);
        }
        $fp      = fopen($file_path, 'w');
        $zipbyte = fwrite($fp, $content);
        if ($zipbyte > 0) {
            $zip = new \ZipArchive();
            if ($zip->open($file_path) === TRUE) {
                $zip->extractTo(APPUPDATE_PATH);
                $zip->close();
                $version                    = Db::name("version")->order("id desc")->find();
                $versionData                = [];
                $versionData['name']        = $updatearr['name'];
                $versionData['buildno']     = $updatearr['buildno'];
                $versionData['content']     = $updatearr['content'];
                $versionData['update_time'] = time();
                Db::name("version")->where("id", "=", $version["id"])->update($versionData);
                if (file_exists($file_path)) {
                    unlink($file_path);
                }
                ajaxmsg("升级成功!", 1);
            } else {
                ajaxmsg("无法打开压缩文件,检查文件目录权限!", 0);
            }
        } else {
            ajaxmsg("更新失败", 0);
        }
    }

(编辑:鹰潭站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!