2016-12-13 69 views
0

我有一個包含4000張左右圖片的FTP服務器,通過兩臺獨立相機(每30分鐘一張圖片)定期添加。我也有一個顯示這些圖片的網站。PHP&FTP:獲取最新批量文件

現在網站顯示每臺相機的最新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張左右的圖片的感覺是非常低效。我已經搜索了其他基於日期的文件檢索方法,但所有這些方法似乎都使用了相同的技術來檢索每個文件,然後再對它們進行排序。

我是否正確地做,或者有某種其他方式會更有效?

在此先感謝。

+0

看起來像你暴露你的FTP憑證給最終用戶! – cmorrissey

+0

ftp_nlist只是給你文件的名稱,而不是文件本身。這不應該是一個問題,並且沒有其他方法來做到這一點,因爲FTP不支持在服務器上進行任何過濾。並且,如上所述,不要將您的憑據放在輸出html中。 – Iarwa1n

+0

這是我面臨的另一個問題。你會知道如何解決這個問題嗎? – Caske2000

回答

0

在FTP中,沒有辦法檢索文件子集的列表(匹配特定條件)。除了一些服務器允許基於文件掩碼選擇文件(但這不是標準)。

所以你做什麼,是你能做的最好的。