J
Jonny83
Gast
Ich hab in PHP ein Script geschrieben, dass den gesamten Inhalt eines FTP-Servers (die Dateien mit Größe) ausliest, um später das ganze in eine MySQL Datenbank zu schreiben. Hier mal das Script - ohne Verbindungsaufbau zum FTP/ zu MySQL, nur der Teil, der die Daten ausliest (MySQL wird noch nicht genuzt):
Die Funktion split_unix($row) dient nur dazu, die ausgabe von ftp_rawlist() brauchbar zu machen. Ergebnis ist ein array, dass den typ (file/ dir), die größe und den dateinamen der aktuellen Zeile enthält.
Jetzt aber zum Problem: Wenn ich das Script ausführe, läuft es erstmal ohne Probleme, aber: bei jeder Verzeichnis-Abfrage wird anscheinend eine neue Verbindung zum FTP aufgebaut, was dazu führt, dass der FTP-Server irgendwann mit der Fehlermeldung "425 Can't open data connection" nicht mehr weiter "kann". Mit "netstat" (in der Win-Konsole) sieht man dann auch, dass ewig viele Verbindung zum ftp-data Port bestehen. Das PHP-Script bricht dann nach 15 sek. mit "Fatal error: Maximum execution time of 15 secounds exceeded in ...." (weils halt nicht mehr weiter geht).
Nur was kann ich dagegen machen? Wie könnte ich des ganze sonst realisieren? Bin für jeden gut gemeinten Rat dankbar.
function read($dir) {
set_time_limit(15);
$file_array = ftp_rawlist($GLOBALS[ftp_connection], $dir);
foreach($file_array as $row) {
$row = split_unix($row);
echo $row[0]." ".$row[1]." ".$dir.$row[2]."<br>\n";
$GLOBALS[ i ]++;
if($row[0] == "dir") {
read($dir.$row[2].'/');
}
}
}
read('/');
Die Funktion split_unix($row) dient nur dazu, die ausgabe von ftp_rawlist() brauchbar zu machen. Ergebnis ist ein array, dass den typ (file/ dir), die größe und den dateinamen der aktuellen Zeile enthält.
Jetzt aber zum Problem: Wenn ich das Script ausführe, läuft es erstmal ohne Probleme, aber: bei jeder Verzeichnis-Abfrage wird anscheinend eine neue Verbindung zum FTP aufgebaut, was dazu führt, dass der FTP-Server irgendwann mit der Fehlermeldung "425 Can't open data connection" nicht mehr weiter "kann". Mit "netstat" (in der Win-Konsole) sieht man dann auch, dass ewig viele Verbindung zum ftp-data Port bestehen. Das PHP-Script bricht dann nach 15 sek. mit "Fatal error: Maximum execution time of 15 secounds exceeded in ...." (weils halt nicht mehr weiter geht).
Nur was kann ich dagegen machen? Wie könnte ich des ganze sonst realisieren? Bin für jeden gut gemeinten Rat dankbar.