[英]PHP: Getting files from ftp server (proftpd)
我有网站,从远程ftp服务器(linux proftpd)加载配置文件(每1个网页5-15个)。
当用户打开(刷新)一个网页时,一切正常,页面呈现速度很快(〜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()
和网页仍然冻结了很多时间,并且没有在每个网页的末尾加载文件内容。
怎么了? proftpd设置(默认)还是其他?
已解决: ftp_pasv()就在ftp_login()之后,但不是在ftp_connect之后,一切都很好:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.