【问题标题】:PHP & FTP: Getting latest batch of filesPHP & FTP:获取最新一批文件
【发布时间】:2016-12-13 19:46:55
【问题描述】:

我有一个包含 4000 张左右图片的 FTP 服务器,由两个单独的相机定期添加到该服务器(每 30 分钟一对图片)。我还有一个显示这些图片的网站。

目前该网站显示每台相机的最新 20 张照片。第一个相机的图片都包含字符串“House”,第二个相机的图片包含“Street”。这是我现在使用的代码:

$ftpConn = ftp_connect([LOGIN_INFORMATION]);
$login = ftp_login($ftpConn,[LOGIN_INFORMATION]);
if ((!$ftpConn) || (!$login)) {
    echo 'FTP connection has failed! Attempted to connect to '. $host. ' for user '.$user.'.';
    ftp_close($ftpConn);
    exit();
}

$directory = ftp_nlist($ftpConn,'');
$house = array();
$street = array();

for ($i = 1; $i < count($directory); $i++) {
    if (strpos($directory[$i], 'House')) {
        array_push($house, $directory[$i]);
    } else {
        array_push($street, $directory[$i]);
    }
}
$_SESSION['house'] = $house;
$_SESSION['street'] = $street;
ftp_close($ftpConn);
$result = "<ul>";
for ($i = count($house) - 6; $i < count($house); $i++) {
    $result .= "<li><a class=\"fancybox\" rel=\"group\" href=\"ftp://[LOGIN_INFORMATION]/$house[$i]\"><img src=\"ftp://LOGIN_INFORMATION/$house[$i]\" width=\"160\" height=\"90\" ></a></li>";
}

我觉得首先从服务器检索所有文件然后只使用 40 张左右的图片是非常低效的。我搜索了其他基于日期检索文件的方法,但所有这些方法似乎都使用相同的技术,即在对每个文件进行排序之前检索它们。

我这样做是正确的还是有其他更有效的方法?

提前致谢。

【问题讨论】:

  • 看起来您正在向最终用户公开您的 FTP 凭据!
  • ftp_nlist 只是给你文件的名字,而不是文件本身。这应该不是问题,并且没有其他方法可以做到这一点,因为 FTP 不支持服务器上的任何过滤。而且,如上所述,不要将您的凭据放在输出 html 中。
  • 这是我面临的另一个问题。你知道怎么解决吗?

标签: php html ftp


【解决方案1】:

在 FTP 中,无法检索仅包含文件子集的列表(符合特定条件)。除了一些服务器允许根据文件掩码选择文件(但这不是标准)。

所以你所做的,就是你能做到的最好的。

【讨论】:

    猜你喜欢
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2017-05-31
    • 2017-02-19
    相关资源
    最近更新 更多