【发布时间】:2013-01-16 09:29:21
【问题描述】:
我需要在 PHP 中创建自定义 FTP 包装器的帮助。
我用过
$h=fopen('ftp://....');
但这不适用于所有 FTP 服务器(有时主动/被动模式存在问题),我无法使用包装器来控制它。
我使用来自http://php.net/manual/en/book.ftp.php 的函数并且一切正常。我只在使用 PHP FTP 包装器下载时遇到问题。
我需要使用包装器,因为我不想将下载的文件存储到磁盘。我从流中读取文件的一部分,然后输出到用户浏览器。
所以我想在 PHP 中创建自定义 FTP 包装器。最重要的是,如果它基于 http://php.net/manual/en/book.ftp.php 的函数。
我在http://php.net/manual/en/function.ftp-fget.php那里看到了例子
function ftp_get_contents ($conn_id, $filename,
//Create temp handler:
$tempHandle = fopen('php://temp', 'r+');
//Get file from FTP assuming that it exists:
ftp_fget($conn_id, $tempHandle, $filename, FTP_ASCII, 0));
//Getting detailed stats to check filesize:
$fstats = fstat($tempHandle);
return fread($tempHandle, $fstats['size']);
}
但这并不好,因为它会将完整文件保存到磁盘,并且只有在此之后我才能从本地文件中读取。
你知道这样的事情,但允许我从 FTP 服务器读取文件的一部分而不在本地缓存完整文件吗?
谢谢。
【问题讨论】:
-
不要为此使用 php。 PHP 已经吃掉了足够的内存。使用一些通过 php 调用的命令行脚本。
-
您的意思是使用php.net/manual/en/function.popen.php 并创建一些命令行工具来从FTP 读取文件并打印到输出?
-
是的。为工作使用正确的工具!钉子的锤子。螺丝刀。 php 用于漂亮的主页。 :)
标签: php