Hi Leute,
ich hab ein Script geschrieben, dass einen FTP ausliest und die enthaltenen Dateien in eine DB einträgt. Leider trägt dies öfters doppelt die Datei ein und zweitens braucht das für das auslesen doch längere Zeit.
Wie behebe ich diese Fehler?
Danke für eure Hilfe!
Grüße strex
ich hab ein Script geschrieben, dass einen FTP ausliest und die enthaltenen Dateien in eine DB einträgt. Leider trägt dies öfters doppelt die Datei ein und zweitens braucht das für das auslesen doch längere Zeit.
Wie behebe ich diese Fehler?
Danke für eure Hilfe!
Grüße strex
PHP:
<?
include("dbconnect.php");
//FTP
$ftp = "xxx";
$user = 'xxx';
$pw = 'xxx';
//OTR-FTP Verzeichnisse
$Verzeichnisse = array("dvbotr01","dvbotr02","dvbotr03","dvbotr04","dvbotr05","dvbotr06","dvbotr07","dvbotr08","dvbotr09","dvbotr10","dvbotr11","dvbotr12","dvbotr13",
"dvbotr14","dvbotr15","dvbotr16","dvbotr17","dvbotr18","dvbotr19","dvbotr20","dvbotr21","dvbotr22","dvbotr23","dvbotr24","dvbotr25");
//Bad Files, die nicht eingetragen werden sollen
$bads = array("index.txt","done");
function logg($str) {
$pref = "[> FTP <]";
$time = date("H:i:s");
echo("(".$time.")".$pref." >> ".$str."\r\n");
}
@set_time_limit(0);
$verbindung = @ftp_connect($ftp);
logg("*** Verbindung zu FTP-Server ".$ftp." wird hergestellt.<br>");
$fehler=false;
if(!$verbindung) {
logg("*** Konnte kein Verbindung zu FTP-Server herstellen.<br>");
@ftp_quit($verbindung);
$fehler=true;
die();
} else {
$login = @ftp_login($verbindung, $user, $pw);
logg("*** Verbindung zu FTP-Server hergestellt. Anmeldung läuft.<br>");
if(!$login) {
logg("*** Benutzername oder Passwort falsch.<br>");
@ftp_quit($verbindung);
$fehler=true;
die();
}
}
if(!$fehler) {
$sql = mysql_query("SELECT `otrkey`, `pfad` FROM `otrlist` WHERE `status` = '0' AND `server` = '$ftp' ORDER BY `time` DESC");
while ($data = mysql_fetch_row($sql)) {
$ftpsize = @ftp_size($verbindung, $data[1]);
if($ftpsize == -1){
$sql2 = mysql_query("UPDATE `otrlist` SET `status` = '10' WHERE `otrkey` = '$data[0]'");
logg("*** <b>OTRKEY-STATUS</b>: $data[0] wurde als nicht mehr existent makiert<br>");
}else{
logg("*** <b>OTRKEY-STATUS</b>: $data[0] ist noch auf dem OTR-Server vorhanden<br>");
}
}
foreach($Verzeichnisse as $Verzeichnis) {
if(@ftp_chdir($verbindung, "/$Verzeichnis")) {
logg("*** Betrete Verzeichnis ".$Verzeichnis."<br>");
$dateien = @ftp_nlist($verbindung, ".");
foreach($dateien as $datei) {
$DateiGroesse = @ftp_size($verbindung, "/$Verzeichnis/$datei");
$filetime = @ftp_mdtm($verbindung, "/$Verzeichnis/$datei");
$on=false;
$sql = mysql_query("SELECT otrkey FROM `otrlist` WHERE `otrkey` = '$datei' LIMIT 1");
$file_check = mysql_num_rows($sql);
if($file_check == 1){
logg("*** <b>OTRKEY</b>: $datei ist schon in der DB<br>");
$on=true;
}
foreach($bads as $badfile) {
if($datei == $badfile){
$on=true;
}
if (strstr($datei, '.info')) {
$on=true;
}
}
$sql = mysql_query("SELECT otrkey FROM `otrlist` WHERE `otrkey` = '$datei' LIMIT 1");
$file_check = mysql_num_rows($sql);
if($file_check == 1){
logg("*** <b>OTRKEY</b>: $datei ist schon in der DB<br>");
$on=true;
}
if(!$on and $file_check == 0){
$timestamp = time();
$pfad = "/$Verzeichnis/$datei";
$status = 0;
$sql = mysql_query("SELECT otrkey FROM `otrlist` WHERE `otrkey` = '$datei' LIMIT 1");
$file_check = mysql_num_rows($sql);
if($file_check == 0 && $sql == true){
$sql = mysql_query("INSERT INTO otrlist (otrkey, dir, pfad, size, time, status, server, filetime) VALUES ('".$datei."','".$Verzeichnis."','".$pfad."','".$DateiGroesse."','".$timestamp."','".$status."','".$ftp."','".$filetime."')");
if($sql == true){
logg("*** <b>OTRKEY</b>: $datei eingetragen<br>");
}else{
logg("*** <b>OTRKEY-Fehler</b>: $datei nicht eingetragen<br>");
}
}else{
logg("*** <b>OTRKEY</b>: $datei Filecheck nicht möglich abbruch<br>");
}
}
}
}
@ftp_chdir($verbindung, "../");
}
}
@ftp_quit($verbindung);