2010-08-16 83 views
1

我想通過PHP設置一個自動備份,使用http/s我可以將zip文件請求「POST」到另一個服務器,發送一個大的.zip文件,基本上,我想備份整個站點(及其數據庫),並通過http/s通過cron peridocally傳輸文件。 somethiling像大型文件傳輸的最佳方法通過使用PHP(POST)通過http調用文件傳輸

wget http://www.thissite.com/cron_backup.php?dest=www.othersite.com&file=backup.zip 

適當的身份驗證安全性,可以添加後記....

我喜歡HTTP/S,因爲這等網站已經限制使用FTP,是在Windows中。所以我認爲通過http/s與其進行通信的方式是肯定的。另一端會有一個對應的php腳本來存儲文件。

這個過程中需要完全編程(即閃存上傳者將無法正常工作,因爲這需要一個瀏覽器來工作,這個腳本會在shell會話中運行)//

是否有任何廣義PHP庫或有助於這種事情的功能?我知道PHP腳本超時問題,但我通常可以修改php.ini以最大限度地減少此問題。

回答

0

我個人不會使用wget,只是直接從shell運行。

你的PHP腳本會從cron這樣調用: 在/ usr/local/bin目錄/ PHP /your/script/location.php ARGS這裏,如果你想

這樣,您就不必擔心關於另一個處理事情的程序(wget),如果您的設置在每次運行時都是相同的,那麼只需將它們放入配置文件或直接放入PHP腳本。

超時可以由此處理,使PHP腳本運行無限的時間。

set_time_limit(0); 

不知道你正在使用什麼庫,但看看CRUL做POST,應該可以正常工作。

我認爲將會出現的最大問題將會更加嚴重相關,並減少與PHP /腳本相關的問題,即確保您獲得了帶寬,並且您的PHP腳本可以連接到外部服務器。

0

如果它儘可能遠離通過HTTP進行大量傳輸。 FTP也遠非理想 - 但出於非常不同的原因。

是的,可以通過ftp,http和https使用curl來實現 - 但這並不能真正解決任何問題。 HTTP是在相對較短的時間內發送相對較小的文件進行優化的 - 當你偏離目標時,最終會破壞很多適用於web服務器的優化(例如,如果你有一個maxrequestsperchild設置,你可能會被人爲地延長應該停止的進程的生命週期,LimitRequest *設置和max_file_size之間的交互,更不用說各種超時以及其他限制在Apache中的設置)。

一個更合理的解決方案是使用rsync通過ssh進行內容/代碼備份以及適用於您正在使用的DBMS的相應數據庫複製方法 - 例如, mysql複製。

+0

我很懷疑,雖然我同意,但當你有控制環境的兩端時避免大文件傳輸http的問題。由於Windows盒子接收文件,因此在ssh上使用rsync不適用。配置方面,我對內部Windows公司服務器的控制有限,但仍然需要在那裏獲得一個大型的30MB文件..它的IIS接口限制的作用可能會發揮作用,但我也看到這在其他網站上完成,並在它的快速連接通常不會太糟糕。 – user299319 2010-08-16 16:12:36