Angenommen, wir haben einen Remote -FTP -Server, der die Dateien jeden Tag aktualisiert. Unser Ziel ist es, in den frühen Morgenstunden des jeden Morgens automatisch eine Verbindung zum Server über PHP -Skripte herzustellen, zu überprüfen, welche Dateien an diesem Tag neu hochgeladen werden, und diese Dateien dann lokal für die nachfolgende Verarbeitung herunterladen.
Zunächst müssen wir eine Verbindung zum FTP -Server herstellen und sich anmelden:
$ftp_host = 'ftp.gitbox.net';
$ftp_user = 'username';
$ftp_pass = 'password';
$conn_id = ftp_connect($ftp_host);
if (!$conn_id) {
die("Es kann keine Verbindung zu herstellen können FTP Server");
}
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
if (!$login_result) {
ftp_close($conn_id);
die("FTP Fehler bei der Anmeldung");
}
Verwenden Sie FTP_RAWLIST , um Dateiinformationen im Zielverzeichnis zu erhalten:
$remote_dir = '/updates/';
$raw_list = ftp_rawlist($conn_id, $remote_dir);
if ($raw_list === false) {
ftp_close($conn_id);
die("Dateiliste kann nicht abgerufen werden");
}
FTP_RAWLIST gibt eine Reihe von Zeilen zurück, die der Ausgabe des UNIX LS -L -Befehls ähneln. Wir müssen diese Zeilen analysieren, den Dateinamen extrahieren und die Zeit ändern:
$today = date('M d'); // e.g., "May 23"
$files_to_download = [];
foreach ($raw_list as $line) {
$parts = preg_split("/\s+/", $line, 9);
if (count($parts) < 9) continue;
$month = $parts[5];
$day = str_pad($parts[6], 2, '0', STR_PAD_LEFT);
$file_time_or_year = $parts[7];
$name = $parts[8];
if ("$month $day" == $today) {
$files_to_download[] = $name;
}
}
Laden Sie dann die aktualisierten Dateien an diesem Tag herunter:
foreach ($files_to_download as $file) {
$local_file = __DIR__ . "/downloads/$file";
$remote_file = $remote_dir . $file;
if (ftp_get($conn_id, $local_file, $remote_file, FTP_BINARY)) {
echo "Laden Sie die Datei erfolgreich herunter:$file\n";
} else {
echo "Download fehlgeschlagen:$file\n";
}
}
Schließen Sie nach Abschluss der Aufgabe die FTP -Verbindung:
ftp_close($conn_id);
In den oben genannten Schritten implementieren wir ein PHP-basiertes Timing-Task-Skript, mit dem automatisch eine Verbindung zum FTP-Server hergestellt und tägliche aktualisierte Dateien heruntergeladen werden kann. Dieses Skript kann jeden Tag regelmäßig mit Linux ' Cron Timing Task System ohne manuelle Eingriff ausgeführt werden. Diese Methode ist für eine Vielzahl von Szenarien geeignet, in denen Dateien regelmäßig aktualisiert werden müssen, insbesondere wenn sie sich mit Protokolldateien, Datensynchronisation oder statischen Ressourcenaktualisierungen befassen.