【发布时间】: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 中。
-
这是我面临的另一个问题。你知道怎么解决吗?