开源进销存PSI - 系统升级

TODO: 这个文档我会不断更新

PSI作为一款应用,随着时间的过去,会面临如下的挑战:

1、PHP代码如何升级?

2、数据库如何升级?



下面的方法,都是在客户没有自己做修改定制的前提下(客户自己做了修改定制,我基本上就无解)。

1、PHP代码升级,这个容易,下载新PHP代码,再删除原来部署的PHP代码,再部署新版本的PHP代码。

在:\web\Public\Scripts\PSI\Const.js 这个文件中,记录当前PHP代码的版本。在JS中通过PSI.Const.VERSION就能获得。

把PHP代码的版本记录在JS文件中,很奇葩,好吧,我承认。因为当时我决定记录版本信息了,头脑一短路,就选了写代码最方便的方式,存在JS中了。不过考虑到JS代码基本要配合这PHP代码一起用,这样来记录版本,也算马马虎虎。

2、数据升级,是比较麻烦的事情。

2.1 需要记录数据库版本,为此我增加了一个表 t_psi_db_version,具体格式见数据库设计文档,这里不多说,通过这个表,就能获得当前数据库的版本。

2.2 但是这个不够,因为如果t_psi_db_version被破坏,还是会出问题。

2.3 这样追溯下去,总的有个版本号得信任。这个能信任的是\web\Public\Scripts\PSI\Const.js 中记录的版本号。

2.4 取得JS中的PSI.Const.VERSION的值,如果这个值不是预定范围内的值(什么是预定范围内,目前我还没有仔细设计),就根本不让登录界面出现。

2.5 增加一个模块“系统升级”

下面说说,系统升级的升级算法。

假设是四个版本状态:V1、V2、V3、V4

当前PSI.Const.VERSION 的值是 V2

2.5.1 判断数据库是否是V2状态,怎么判断?办法是穷举法。一个表一个表地判断表结构是否正确。

经过穷举法,得出数据库版本如果是V3、V4,那么就不能升级数据库,而是提醒用户PHP代码版本过低。

经过穷举法,得出数据库版本如果是V2,则提示用户不用升级。

经过穷举法,得出数据库版本是V1(当然了,比V1版本更低的V0,也没问题),就可以开始升级。

时间: 2024-08-01 22:47:07

开源进销存PSI - 系统升级的相关文章

开源进销存PSI - 技术文档目录

开源进销存PSI技术文档目录 1.本地环境搭建 2.总体技术架构 PSI概要设计文档在这里

开源进销存PSI - 为什么又要用Java重写一个版本?

看这篇文章之前,最好先看看这个: http://my.oschina.net/u/134395/blog/382447 1.PSI 目前是用PHP写的,但是我决定还要再弄个Java版本! 2.原因之一: Just for fun !  (向 Linus Torvalds 致敬!) 3.如果只是简单地把PHP代码翻译成Java代码,那么这个 fun就不够爽,所以呢:Java版有其独特的规划. 概要地讲,PSI Java版的目标是:集团版的进销存系统. PHP版本的PSI,目前还只能给单店使用,遇到

开源进销存PSI - 为什么要开发安卓app

PSI为什么要开发安卓app而不用H5? 1.如果用手机或者其他移动设备访问:http://psi.oschina.mopaas.com ,就能看到H5页面. 2.在PSI中H5方式主要用来做报表展现和以后嵌入到微信中. 3.有一种设备叫:智能手持终端,见下图(图片版权归百度百科) 目前很多这种设备,是基于WinCE的,但是越来越多的类似设备是基于安卓的了. 4.还有一个例子:收银POS机,基于安卓系统的也越来越多. 5.概括说原因就是:越来越多的外部设备是基于安卓系统的,而在进销存业务中会用到

开源进销存PSI - 关于PSI开源协议的一些说明

经常有用户对PSI的开源协议产生疑惑,这篇文章就集中讲讲这方面的话题. 1.PSI是双开源协议:GPL V3和Apache License V2. 2.之所以是双协议,很大的因素是因为ExtJS.因为PSI使用了ExtJS 4.2.1作为UI,我并没有ExtJS的商业授权,所以使用的是ExtJS的开源版本,ExtJS开源版本的开源协议是GPL V3. 因为GPL协议有一定的"传染性",所以,PSI就采用了GPL V3协议. 3.但是,因为PSI是企业管理软件,如果不能私有化,很多企业总

开源进销存PSI - 技术随笔

1.Netbeans 英文版 说实在的,Netbeans的默认中文字体实在是不符合我的审美观.我是从微软的世界转移到开源的世界,IDE的美学观被微软给弄坏了.最后,把Netbeans弄成英文界面,才勉强接受. 如何实现Netbeans,网上也很多,我就再记录一次也无妨. 简单说就是修改 C:\Program Files\NetBeans 8.0.2\etc\netbeans.conf 给该文件中的netbeans_default_options增加-J-Duser.language=en -J-

开源进销存PSI - 关于UI的规划

这个话题是由PSI的开源协议引起,我用这篇文章讲讲我对PSI UI的规划. 1.因为目前我是个人,尚未注册公司,所以购买ExtJS的商业许可方面,有很多的麻烦事情. 2.PSI是商业项目,只是商业模式中有代码开源.所以,在成立公司后,会购买ExtJS的商业许可,从而解决PSI官方产品 ExtJS的分发问题. 如果只是这样,当然就谈不上规划了.下面,就来畅想一下啊. 1.对于企业应用,我深知UI框架的重要.所以,开发一套自身的框架,当然是必须的. 2.最自然的演化路径是:购买ExtJS的商业许可

开源进销存PSI - 为什么用PHP开发

PSI为什么要用PHP开发?这个问题,很多网友都问过我,今天就写一篇博客来讲讲这个历程. 概括讲,主要原因是:省钱. 2011年我启动了一个开源项目:CRM8000,当时是host在 teamhost上,teamhost后来的演变见这里:http://segmentfault.com/a/1190000000374128  . 所以,[email protected]成了我的注册邮箱,之后就一直沿用. CRM8000被OSC收录的时间是:2011年4月12日. 这一个版本的CRM8000,我是用

开源进销存PSI - 数据库外键

今天在PSI的QQ群中聊起了数据库外键的话题,我就写这篇博文,说说我对数据库外键的一些考虑. 1.数据库设计中应该使用外键. 2.很杯具,PSI的数据库设计到目前为止,没有使用外键. 3.PSI会逐步把数据库外键给补上. 4.有些地方还真没法加上外键.举现在的例子: 4.1 t_warehouse_org中的org_id字段,即可以存储 t_org的id,又可以存储t_user的id,这个时候,外键就没法加了. 4.2 t_inventory_detail中的ref_number字段,可以存储多

开源进销存PSI - 部署安全

// TODO 安全问题广泛而复杂,我也不是全部都懂,所以本文档也会不断增补,也希望大家多多指正错误之处! 本文档产生的原因是:PSI虽然还没有开发完毕,但是已经有用户要投入实际生产环境使用了,并询问了我如何增强安全,于是我就开始动手编写这篇文档. 1.数据库的安全 1.1 原则1:在生产环境中,不要使用root,而是创建新用户来访问数据. 1.2 很多时候,原则1没有被很好的执行,那么下面就说说,如何修改root的密码,这个最初级的安全措施. 下面的操作,均基于PSI的发布的安装包,即XAMP