我有网站,从远程ftp服务器()加载配置文件(每一个网页5-15个)。
当用户打开(刷新)只有一个网页-一切正常,页面呈现为快速(~100毫秒)。当用户在web浏览器上一个接一个地打开4-6个选项卡(在打开选项卡之间延迟1秒左右)时,avg1-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只有一个与命令'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设置(默认设置)还是其他什么?
发布于 2014-02-07 12:03:04
解决了: ftp_pasv()就在ftp_login()之后,但在ftp_connect和everithing之后工作得很好:)
https://stackoverflow.com/questions/21602040
复制相似问题