V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ixixi
V2EX  ›  程序员

如何升级 PHP 项目(类似 cms)?

  •  
  •   ixixi · 2022-06-07 12:37:29 +08:00 · 1483 次点击
    这是一个创建于 930 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们做的商业软件,整体来说就是增删改查,数据库表也不复杂大约十张,目前想重构,面临几个问题

    1.给客户安装之后,需要定期的在线升级 2.升级表结构

    这部分有两个问题 php 没有打包,升级文件会巨多不太方便,能不能把 php 像前端一样打包一下 升级表结构也不太好整 数据库如果改成 sqlite 是不是会更好一些,旧数据用 mysql

    有无可参考开源的解决方案呢 ?

    6 条回复    2022-06-08 13:12:42 +08:00
    mrpzx001
        1
    mrpzx001  
       2022-06-07 13:12:14 +08:00
    php 有打包,phar
    xiaojj
        2
    xiaojj  
       2022-06-07 13:15:07 +08:00
    参考一下各类 cms 的后台更新功能,直接下载压缩包,解压出来就可以了
    升级的时候运行一下新版本的升级代码,更新表结构
    sqlite 升级表结构比 mysql 麻烦
    msg7086
        3
    msg7086  
       2022-06-08 06:02:23 +08:00 via Android
    升级表结构,找支持 db migration 的数据库抽象层。
    升级文件多这个没办法,自己写一个升级器?应该也不难的。
    jazzg62
        4
    jazzg62  
       2022-06-08 08:27:50 +08:00
    我之前写了个脚本,可以根据 git 的 changes 来复制项目中所有改动的文件。这样就可以直接把更新的文件压缩,然后复制到客户电脑上解压就好了。项目中原有的目录结构我也保留了,所以可以直接覆盖。
    表结构的话,你应该要自己来写升级代码了。
    如果需要的话,我把脚本发你试试,希望能给你带来一点帮助
    wowbaby
        5
    wowbaby  
       2022-06-08 10:52:59 +08:00
    git ,类似 cms 那种更新不安全,生产环境执行程序不应有写入权限,
    815979670
        6
    815979670  
       2022-06-08 13:12:42 +08:00
    写一个脚本 依赖 git 将更新文件打包,然后这个升级包中包含更新文件和校验(防止包下载不完整 或被第三方篡改),在系统中再做一个升级的逻辑,自动下载更新包进行校验和解压覆盖。
    如果包含数据库的变更 可以在升级之后执行数据库迁移命令
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5842 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 252ms · UTC 06:22 · PVG 14:22 · LAX 22:22 · JFK 01:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.