繁体   English   中英

PHP:从ftp服务器(proftpd)获取文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM