2009-01-18 74 views
2

我正在用PHP编写一个Web应用程序,它已经到了构建更新系统的时间,其中一个需求是自动更新,我应该如何执行此操作?PHP应用程序更新

我想在没有cron的情况下执行此操作,因此我将不得不在检查系统请求时检查更新,我是否应该只在具有重要priv特权的管理员登录时执行此操作认为这将是最好的,但至少有一位客户表示他们不希望这样,因为他们只打算每隔几个月登录一次,他们仍然希望获得安全更新。

回答

2

也许你可以对你的网站网页返回与最新版本号的小XML文件和下载网址:

<xml> <version>1.x.y</version> <url>http://example.com/current.tgz </url> </xml>

那么如果管理员选择执行和升级,除了XML文件的URL和当前版本号之外,您的应用程序不需要知道任何内容。

当然这是一个非常有限的例子,您可以根据这个例子展开您的内容。

0

谁将会创建更新?如果是你,为什么不在更新时将更新推送到服务器呢?一旦更新完成,只需将其rsync同步,服务器将立即更新。它击败了cron,当用户等待他们的页面加载时,它绝对不错。

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网站ofcourse,并确保你不会从SVN更新“生产设置”。 Et瞧,您更新您的完整的代码库与一个HTTP查询到您的网站:) SVN自动覆盖文件,没有隐藏的文件或文件夹留下,它很容易适应更新或恢复到特定版本。 现在你所有的团队需要做的就是提交他们的SVN仓库,在测试环境中运行这段代码,确保一切正常,然后在生产环境中运行它:)