我正在用PHP编写一个Web应用程序,它有时间构建一个更新系统,其中一个要求是自动更新,我应该怎么做?
我想在没有cron的情况下这样做,所以当我向系统发出请求时,我将不得不检查更新,我是否应该只在具有重要权限的管理员登录时执行此操作,我认为这将是最好的,但至少有一个客户说他们不想要这个,因为他们只打算每隔几个月登录一次,他们仍然希望获得安全更新。
答案 0 :(得分:2)
也许您的网站上有一个页面可以返回一个包含最新版本号和下载URL的小型XML文件:
<xml>
<version>1.x.y</version>
<url>http://example.com/current.tgz </url>
</xml>
然后,如果管理员选择执行和升级,您的应用程序将不需要知道除XML文件的URL和当前版本号之外的任何内容。
当然,这是一个非常有限的例子,您可以根据这个例子扩展到您的内心。
答案 1 :(得分:1)
使用课程版本!
我在大多数制作网站中加入了这个'插件': 当然,你需要首先创建一个有限权限的机器人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网站后面,并确保不更新SVN的“生产设置”。 Et voila,您通过一个HTTP查询更新您的完整代码库到您的站点:) SVN自动覆盖文件,没有隐藏的文件或文件夹留下,它很容易适应更新或恢复到特定版本。 现在你的团队需要做的就是提交他们的SVN存储库,在测试环境中运行这段代码,确保一切正常,然后在生产中运行:)
答案 2 :(得分:0)
谁将创建更新?如果是你,为什么不在制作时将更新推送到服务器?一旦写入更新,只需将其同步,服务器将立即更新。它击败了cron,当用户等待他们的页面加载时,它肯定胜过检查。