我有网站,从远程ftp服务器加载配置文件(每1个网页5-15个)(linux proftpd) 。 p>
当用户打开(刷新)只有一个网页时 - 一切都很好,页面渲染速度很快(~100毫秒)。 当用户在网络浏览器上逐个打开4-6个标签(打开标签之间约1秒延迟)时,平均1-3个网页呈现快速,但4-6页它太懒(最多60秒或更长时间) 。 p>
我发现了瓶颈:这是ftp_get()php函数,当从ftp获取文件时冻结到ftp_connect()中设置的超时时间。 只有ftp_get()冻结网页呈现。 p>
public function getConfigViaFtp($ config_name)
{
$ handle = fopen('php:// temp',' r +');
ftp_fget($ this-> getFtpConnectionStream(),$ handle,$ config_name,FTP_ASCII);
rewind($ handle);
返回stream_get_contents($ handle);
}
code> pre>
我是ssh到远程ftp服务器并运行ftptop来查看页面冻结时的连接。 proftpd与COMMAND'RETR'只有一个连接。 p>
ftp_get总是成功从ftp获取第一个(有时最多5个文件)文件,但是另一个文件总是空的(但是存在且不是空的 这个文件的ftp服务器和ftp_get超时。 p>
我尝试: p>
ob_start();
$ result = ftp_get($ this-> getFtpConnectionStream(),'php:// output',$ config_name,FTP_ASCII);
$ data = ob_get_contents();
ob_end_clean();
code> pre>
尝试 ftp_pasv() code> p>
但没有:( ftp_get() code>和web- 页面仍然冻结了很多时间,并且没有加载每个网页末尾的文件内容。 p>
什么是错的?proftpd设置(默认)还是其他什么? p>
div>