例如: 每天从 https://git.io/GeoLite2-City.mmdb 下载最新的数据库文件。
管理员设置页面添加新配置项:
- 下载 mmdb 文件的地址
- 自动更新的周期
还需要提供根据地址立即更新的按钮。
数据库 config 表里添加新记录,除了在页面上的两个配置外还需要添加:
- 上一次成功更新 mmdb 文件的时间。
添加小时级别的定时器,每次执行时检查当前时间与上次成功更新的时间差是否已经超过了配置中的自动更新周期,超过后下载新版本。下载的文件名中可以以当前日期时间作为多个版本的区分,当下载成功后,删除所有历史文件。下载文件出错就删除新创建的文件。如果在这个过程中进程异常退出(或者服务器断电),那么会保留多个 mmdb 文件,但按照文件名排序的第一个文件还是正确的,所以不影响程序正常运行。
例如: 每天从
https://git.io/GeoLite2-City.mmdb下载最新的数据库文件。管理员设置页面添加新配置项:
还需要提供根据地址立即更新的按钮。
数据库 config 表里添加新记录,除了在页面上的两个配置外还需要添加:
添加小时级别的定时器,每次执行时检查当前时间与上次成功更新的时间差是否已经超过了配置中的自动更新周期,超过后下载新版本。下载的文件名中可以以当前日期时间作为多个版本的区分,当下载成功后,删除所有历史文件。下载文件出错就删除新创建的文件。如果在这个过程中进程异常退出(或者服务器断电),那么会保留多个 mmdb 文件,但按照文件名排序的第一个文件还是正确的,所以不影响程序正常运行。