2010-03-29 66 views
0

PHP問題(Perl 10年後PHP的新增功能,arrggghhh!)。是否可以在沒有將數據保存在內存中的情況下將文件傳輸到服務器和從服務器傳輸文件?

我有一個100MB的文件,我想發送到另一臺服務器。

我已成功地讀取該文件與「後」它沒有捲曲(不能爲這個應用程序使用捲曲)。一切工作都很好,在較小的文件。

然而,與較大的文件,PHP抱怨不能夠分配內存。

有沒有辦法打開一個文件,一行行,並用線將其作爲一個帖子還行?

這樣沒有在如此RAM防止我的錯誤,讓周圍嚴格的限制舉行。

克里斯

這裏是我當前的代碼,與大文件錯誤:

<?php 
ini_set('display_errors',1); 
error_reporting(E_ALL|E_STRICT); 

$resp = do_post_request("/local/file.txt","http://www.mysite.com/receivedata.php"); 
exit; 

function do_post_request($file,$url){ 
    $fileHandle = fopen($file, "rb"); 
    $fileContents = stream_get_contents($fileHandle); 
    fclose($fileHandle); 

    $params = array(
     'http' => array 
     (
      'method' => 'POST', 
      'header'=>"Content-Type: multipart/form-data\r\n", 
      'content' => $fileContents 
    ) 
    ); 

    $ctx = stream_context_create($params); 
    $fp = fopen($url, 'rb', false, $ctx); 

    $response = stream_get_contents($fp); 
    return $response; 
} 
?> 

回答

1

您可以使用fopenfgets(或fread備選地)讀取文件順序。

但是,如果你唯一的目的是爲了刷新文件到標準輸出,你可以簡單地使用readfile('filename'),它會做你想要什麼。

+0

我想將數據發佈到從cron作業運行的命令行php腳本中的URL。這有什麼區別嗎? – 2010-03-29 13:48:08

+0

不需要,因爲你需要使用fgets/fread來完成它,因爲readfile輸出到PHP的輸出緩衝區。 – 2010-03-29 14:11:46

+0

我已經發布了一些代碼來解釋我的意思。我到處尋找,沒有任何東西 - 或者我得到了棍棒的錯誤結局? ;) – 2010-03-29 17:32:20

相關問題