题
我写在PHP中的Web应用程序,它已经来到的时间来建立一个更新系统,其中一个要求是自动更新的,我应该怎么做呢?
我想这样做,没有一个cron,所以我将不得不检查更新时请求对系统进行,我应该这样做,只有当管理员,有显著PRIVS,日志式,我觉得这将是最好的,但至少1客户端已经表示,他们不希望这样,因为他们只打算每隔数月登陆,他们仍然希望得到安全更新。
解决方案
也许你可以对你的网站网页返回与最新版本号的小XML文件,并下载网址:
<xml>
<version>1.x.y</version>
<url>http://example.com/current.tgz </url>
</xml>
然后,如果管理员选择进行升级,您的应用程序不需要知道比URL到XML文件和当前版本号的任何其他。
当然,这是一个非常有限的例子时,你可以扩大你的心内容。
其他提示
使用版本ofcourse!
我包括我的大部分生产基地这个“插件”: Ofcourse,你需要创建一个有限权限机器人SVN占该第一和svn必须在服务器上安装。
<?php
echo(' updating from svn<br>' );
$username = Settings::Load()->Get('svn','username');
$password = Settings::Load()->Get('svn','password');
echo(" <pre>" );
$repos = Settings::Load()->Get('svn' , 'repository');
echo system ("svn export --username={$username} --password {$password} {$repos}includes/ ".dirname(__FILE__)."/../includes --force");
echo system("svn export --username={$username} --password {$password} {$repos}plugins/ ".dirname(__FILE__)."/../plugins --force");
die();
请确保你把这个后面的.htpasswded网站ofcourse,并确保你不会从SVN更新“生产设置”。 等瞧,您更新了完整的代码库与一个HTTP查询到您的网站:) SVN自动覆盖文件,有没有隐藏的文件或文件夹留下其很容易地适应更新或恢复到一个特定版本。 现在,所有你的团队需要做的是承诺他们的SVN仓库,运行这段代码的测试环境,确保一切正常运作,然后在生产环境中运行它:)
谁会要创建更新?如果是你,为什么不只是有更新推送到服务器它们是由什么时候?一旦更新写入,只是rsync的过来,服务器将立即最新的。这可难倒了cron和它肯定击败,而你的用户正在等待他们的页面加载检查。