Ich habe diesen Code, der täglich um 12 Uhr ausgeführt wird. Es kann derzeit nur verwendet werden, um die letzte Datei auf dem Server mit ftp_mdtm
(geänderte Zeit) zu erfassen. Das Problem, mit dem ich konfrontiert bin, ist, dass der Server manchmal mehr als eine Datei auf den Server hochlädt. Wie kann ich die neuesten Dateien für diesen Tag herunterladen? Ich verwende derzeit ftp_get
.Wie kann ich mehr als 1 Datei mit ftp_get in PHP
<?php
$conn = ftp_connect('abc.com');
ftp_login($conn, 'lalala', '12345');
// get list of files on given path
$files = ftp_nlist($conn, '');
$mostRecent = array(
'time' => 0,
'file' => null
);
foreach ($files as $file) {
// get the last modified time for the file
$time = ftp_mdtm($conn, $file);
if ($time > $mostRecent['time']) {
// this file is the most recent so far
$mostRecent['time'] = $time;
$mostRecent['file'] = $file;
}
}
ftp_get($conn, "$file.zip", $mostRecent['file'], FTP_BINARY);
ftp_close($conn);
$file_open= $file . ".zip";
$path = "./zip/";
$zip = new ZipArchive;
$res = $zip->open($file_open);
if ($res === true) {
// extract it to the path we determined above
$zip->extractTo($path);
$zip->close();
//echo "$file_open extracted to $path";
} else {
//echo "I couldn't open $file_open";
}
$servername = "localhost"; //server IP or name
$uname = "lalala"; //username
$pword = ""; //password
$dbname = "lalala"; //database name
$db = new mysqli($servername, $uname, $pword, $dbname);
// Check connection
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
//print_r (glob("test/*.txt"));
//exit();
foreach (glob($path . "/*.TXT") as $file) {
$file_handle = fopen($file, "r");
while (!feof($file_handle)) {
$line = fgets($file_handle);
$new_file = substr($file, 7);
//echo $line;
$query_check = "SELECT filename FROM fos_data WHERE filename = '$new_file'";
$result=mysqli_query($db,$query_check);
$row = mysqli_fetch_assoc($result);
$exist = $row['filename'] . "<br>";
$rowcount=mysqli_num_rows($result);
if ($rowcount > 0) {
$update = " UPDATE fos_data
SET value = '$line'
WHERE filename = '$new_file'";
$result=mysqli_query($db,$update);
echo "Data " . $new_file . " Updated <br>";
}
else{
$insert = "INSERT INTO fos_data
(filename,
value)
VALUES
('$new_file',
'$line')";
$result=mysqli_query($db,$insert);
echo "Data " . $new_file . " Saved <br>";
}
/**/
}
fclose($file_handle);
}
mysqli_close($db);
?>
Dank für respond werde ich es versuchen zuerst –