我正在用PHP編寫一個Web應用程序,它已經到了構建更新系統的時間,其中一個需求是自動更新,我應該如何執行此操作?PHP應用程序更新
我想在沒有cron的情況下執行此操作,因此我將不得不在檢查系統請求時檢查更新,我是否應該只在具有重要priv特權的管理員登錄時執行此操作認爲這將是最好的,但至少有一位客戶表示他們不希望這樣,因爲他們只打算每隔幾個月登錄一次,他們仍然希望獲得安全更新。
我正在用PHP編寫一個Web應用程序,它已經到了構建更新系統的時間,其中一個需求是自動更新,我應該如何執行此操作?PHP應用程序更新
我想在沒有cron的情況下執行此操作,因此我將不得不在檢查系統請求時檢查更新,我是否應該只在具有重要priv特權的管理員登錄時執行此操作認爲這將是最好的,但至少有一位客戶表示他們不希望這樣,因爲他們只打算每隔幾個月登錄一次,他們仍然希望獲得安全更新。
也許你可以對你的網站網頁返回與最新版本號的小XML文件和下載網址:
<xml> <version>1.x.y</version> <url>http://example.com/current.tgz </url> </xml>
那麼如果管理員選擇執行和升級,除了XML文件的URL和當前版本號之外,您的應用程序不需要知道任何內容。
當然這是一個非常有限的例子,您可以根據這個例子展開您的內容。
誰將會創建更新?如果是你,爲什麼不在更新時將更新推送到服務器呢?一旦更新完成,只需將其rsync同步,服務器將立即更新。它擊敗了cron,當用戶等待他們的頁面加載時,它絕對不錯。
使用課程版本化!
我在我的大部分生產站點都包含這個「插件」: 當然,您需要首先爲此創建一個有限權限的機器人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倉庫,在測試環境中運行這段代碼,確保一切正常,然後在生產環境中運行它:)