我有網站,從遠程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的設置(默認),或別的東西