2

我正在用PHP编写一个Web应用程序,现在是时候构建一个更新系统了,其中一个要求是自动更新,我该怎么做?

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

4

3 回答 3

2

也许您可以在您的站点上创建一个页面,该页面返回一个带有最新版本号的小型 XML 文件和一个下载 URL:

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

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

当然,这是一个非常有限的例子,您可以在此基础上扩展您的内心满足感。

于 2009-01-18T05:24:17.553 回答
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 更新“生产设置”。等等,你用一个 HTTP 查询更新你的完整代码库到你的站点 :) SVN 自动覆盖文件,没有隐藏文件或文件夹留下,它很容易适应更新或恢复到特定版本。现在您的团队需要做的就是提交到他们的 SVN 存储库,在测试环境中运行这段代码,确保一切正常,然后在生产环境中运行它 :)

于 2009-01-18T10:35:42.930 回答
0

谁将创建更新?如果是您,为什么不在更新完成时将更新推送到服务器?写入更新后,只需对其进行 rsync,服务器将立即更新。它胜过 cron,而且绝对胜过用户等待页面加载时的检查。

于 2009-01-18T05:32:35.413 回答