2014-02-06 39 views
1

我有網站,從遠程ftp服務器(linux proftpd)加載配置文件(每1網頁5-15)。PHP:從FTP服務器(proftpd)獲取文件

當用戶打開(刷新)只有一個網頁 - 一切都很好,頁面渲染速度快(〜100毫秒)。當用戶在網頁瀏覽器上逐一打開4-6個選項卡(打開選項卡之間延遲約1秒)時,平均1-3個網頁呈現速度較快,但4-6個頁面太慢(最多60秒或更長) 。

我發現瓶頸:這是ftp_get()php函數,當從ftp獲取文件時,它凍結到在ftp_connect()中設置的超時時間。只有ftp_get()凍結網頁渲染。

public function getConfigViaFtp($config_name) 
{ 
    $handle = fopen('php://temp', 'r+'); 
    ftp_fget($this->getFtpConnectionStream(), $handle, $config_name, FTP_ASCII); 
    rewind($handle); 

    return stream_get_contents($handle); 
} 

我是ssh到遠程ftp服務器並運行ftptop查看頁面凍結時的連接。 proftpd與COMMAND'RETR'只有一個連接。

ftp_get總是從ftp獲得第一個(有時最多5個文件)文件,但其他文件始終爲空(但在ftp服務器上存在且不爲空),並且ftp_get在此文件上超時。

我嘗試:

ob_start(); 
$result = ftp_get($this->getFtpConnectionStream(), 'php://output', $config_name, FTP_ASCII); 
$data = ob_get_contents(); 
ob_end_clean(); 

嘗試ftp_pasv()

但沒有什麼:(ftp_get()和網頁仍然凍結大量的時間和在每個月底web的不加載文件的內容?頁面

哪些錯誤proftpd的設置(默認),或別的東西

回答

0

解決: ftp_pasv()緊跟在ftp_login()之後,但不是在ftp_connect和一直運行正常後:)

相關問題