2012-07-14 36 views
1

我有一個「離線處理」服務器,它對cpu週期收取很少的費用,以及一個「媒體服務」服務器,它對帶寬的收費很少。我有一個〜1.3Mb的zip文件,離線處理服務器會生成一個zip文件,然後將其發送到媒體服務服務器以實際託管下載。我一直這樣做的方式是讓脫機處理服務器自己創建文件並將其轉移到另一臺服務器上,但我必須移動主機,現在脫機處理服務器不能將文件保存到本身。在服務器之間傳輸體積適中的數據流的最佳方法在php

我的第一個想法是我可以在媒體服務器上創建一個監聽php腳本,然後將內容發佈到該腳本中,該腳本將其保存到一個zip文件中。解壓縮它是〜4.1Mb,所以發佈這麼多數據是個好主意嗎?我想到的第二件事是在PHP流...但我不知道什麼是最好的。

當我無法將其保存爲生成數據的服務器中的文件時,將此4.1Mb數據從一臺服務器移動到另一臺服務器的最佳方式是什麼?

+0

你多久需要做的處理? – corsiKa 2012-07-14 02:59:31

+0

大約每週一次,並且因爲這一點而正在進行cron作業 - 隨着我的基礎數據集更改,這會爲移動客戶端上的下載進行摘要。 – hackartist 2012-07-14 02:59:44

+0

關閉我的頭頂,它似乎很容易適合內存發送到內容服務器......但我會注意到,我不是一個大的PHP傢伙。 – corsiKa 2012-07-14 03:01:57

回答

2

如果你的主機支持它,我可能會嘗試這樣的:

$fp = fopen('php://memory', 'w+'); 
fwrite($fp, "Hello, World!"); // create your file 
fseek($fp, 0, SEEK_SET); 

// connect to ftp 
ftp_fput($ftp, '/foo', $fp, FTP_BINARY); 

fclose($fp); 
+0

非常非常有趣 - 我以前從來沒有聽說過php://記憶,但我會研究它。 – hackartist 2012-07-14 03:13:43

+1

最糟糕的情況是,您可以將所有內容放入一個變量(字符串)中,並在其上寫入一個細流封裝。那肯定會奏效。 (對於一個醜陋的例子:http://php.net/manual/en/stream.streamwrapper.example-1.php) – Matthew 2012-07-14 03:16:12

+0

非常感謝你的回答。它工作得很好,但我也有一個[後續問題](http://stackoverflow.com/questions/11488752/string-to-zipped-stream-in-php),你可能能夠解決,因爲它是相關的 – hackartist 2012-07-15 01:56:23

相關問題