2009-01-18 106 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倉庫,在測試環境中運行這段代碼,確保一切正常,然後在生產環境中運行它:)