php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 22-07-2007, 15:00
web4free
 Newbie
Links : Onlinestatus : web4free ist offline
Registriert seit: Jun 2005
Beiträge: 108
web4free ist zur Zeit noch ein unbeschriebenes Blatt
Standard [PHP5] unnötiges Bildmaterial Filtern - PHP und MySQL

Hallo Leute,

Es ginge darum aus einen Verzeichnis jene Dateien heraus zu filtern,
die nicht gebraucht werden.
Jene Dateien die benötigt werden, stehen in der Datenbank.
Im Verzeichnis sollen nun genau nur diese Dateien drinnen bleiben die auch lt. Datenbank benötigt werden.

Klar - keine große Sache und wie ich dazu das Script schreibe ist auch klar.
ABER!!!!

Es handelt sich hier nicht um 300-3.000 Dateien sondern um über 800.000 - Tendenz steigend - welche in der Datenbank stehen.

Und genau da hab ich mein Problem, weil ich den Server nicht 5 Std. für dieses Script arbeiten lassen kann - nur damit er mir nacher abbricht.

Wie kann ich nun das vorhandene Bildmaterial mit jenen aus der Datenbank abgleichen, um dann den Scrott vom Server zu schmeißen??

Scheinbar ist das Wetter zu heiß um dass ich auf eine performante Lösung komme.

Bitte, bitte um Hilfe....
Vielen Dank
Mit Zitat antworten
  #2 (permalink)  
Alt 22-07-2007, 15:04
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

*move* nach Brainstorming, oder wirst du konkreter?

Was ist DEIN Ansatz? Ich denke es ist klar, wie du das Script machen würdest. Woran scheiterst du? Warum ist es nicht performant genug?

Wie regelmäßig muss das Script laufen?
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 22-07-2007, 17:37
web4free
 Newbie
Links : Onlinestatus : web4free ist offline
Registriert seit: Jun 2005
Beiträge: 108
web4free ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,

Nun ja woran scheiter es?
Nun der Gedanke ist dass ich ein Array erzeuge mit allen Dateinamen.
Dieses Array gehe ich dann Datensatzweise durch und kopiere die vorhandenen Dateien in ein neues Verzeichnis.

Somit sollten sich im neuen Verzeichnis nur noch jene Dateien befinden die auch in der Datenbank zu finden sind.
Am Schluß kann würde ich dann das alte Verzeichnis löschen und das neue Verzeichnis umbenennen.


Folgende Versuche hatte ich bereits probiert:
.) Alle Dateinamen in ein Array zu schreiben.
.) Datensätze zeilenweise aus der Datenbank auslesen, was bis zu 6 Bilder pro Datensatz ergeben könnte was ich zugleich kopieren könnte.

Ich glaub mein Problem ist das Kopieren der relevanten Bilder ins neue Verzeichnis.
Denn genau daran hängt sich das ganze dann auf, weils Ewigkeiten braucht.
Ich gedenke dieses Script nur einmal in der Nacht pro Monat laufen zu lassen.

Auch hätte ich bereits mit einem Shellscript das ganze probiert, was mir eventuell lieber wäre als mit php.

Somit gleich mal zu meinen Möglichkieten:
Ich habe 2 Rootserver. Auf den einen ist die Datenbank plus das gesamte Projekt.
Auf dem 2. Server befindet sich das ganze Bildmaterial.

Somit würde dieses Script nur auf dem 2. Server seine Sklavenarbeit verrichten um den Produktionsserver nicht unnötig zu belasten.

Vielleicht würde es ja auch Sinn machen, zuerst die ganzen Dateinamen von der Produktionsdatenbank auf die Datenbank am 2. Server einzuspielen, damit dann der Vergleich gesamt am 2. Server ablaufen kann.

Sollte es von Nöten sein - zwecks Einsicht - kann ich ja mal das SH-Script als Anhang dazuhängen um hier meinen Ansatz zu zeigen.

Leider hab ich ja schon das Problem, dass ich nicht einmal die Anzahl der am Server befindlichen Dateien feststellen kann.
Und das mit diesem Script:
PHP-Code:
$a 0;
if (
$handle02 opendir($droot 'inserate/')) {
    while (
false !== ($file02 readdir($handle02))) {
        if (
$file != '.' && $file != '..' && $file != 'thumb')
        {
            
$a++;
        }
    }
}
echo 
$a
Bis vor 3 Monaten gab es dieses Problem noch nicht!
Da hatte ich grad mal an die 90.000 - 150.000 Bilder am Server.
Aber man will ja nicht stillstehen mit seinen Projekt und hat halt einige "Neuzugänge" bekommen :-)
Mit Zitat antworten
  #4 (permalink)  
Alt 22-07-2007, 17:59
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

also statt zu kopieren könntest du mal rename() benutzen, das sollte die performance schonmal steigern.

du solltest generell auf dem bildserver arbeiten, ansonsten hast du natürlich performance einbußen.

du solltest die bilder dann löschen, wenn sie nicht mehr gebraucht werden und nicht die leichen vor sich hin gammeln lassen.

fazit: ein script (nicht zwingend php) auf dem bildserver welches zuerst die whitelist holt und dann alle bilder löscht, die nicht darauf sind und die älter als 1 stunde sind (nur zum puffern).
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5 (permalink)  
Alt 22-07-2007, 18:45
web4free
 Newbie
Links : Onlinestatus : web4free ist offline
Registriert seit: Jun 2005
Beiträge: 108
web4free ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Kurz noch zur Erklärung warum es überhaupt zu Laichen komen kann.

Primär wird und soll und eigendlich tuts das auch! Das genannte Script läuft nur auf dem 2. Server.

Warum kann es jetzt zu solchen Laichen kommen?
Nun - ich habe etwas mehr als 2.000 aktive KFZ-Händler, welche Tag für Tag - und das kann auch mehrmals am Tag sein - deren Fahrzeugbestände importieren.

Als Beispiel nenne ich nur ein einziges ZIP-Archiv - nennen wir es "A"!

1.) Es wird ein temporärer Ordner erstellt, in dem das Archiv A eingespielt wird.
2.) A wird gelöscht.
3.) Fahrzeugbilder werden laut Datenbestand in den Bildordner kopiert.
4.) Datensätze werden in die DB eingespielt
5.) TEMP-Ordner wird gelöscht.

Wenn es bei Punkt 3 irgendeinen Fehler gibt, wird der Import zur Gänze abgebrochen für A und es geht mit dem nächsten Händler weiter - aber die Bilder sind schon mal im Bilderordner kopiert von A.

Sollte eigendlich sehr minimal sein.
Leider kann es dadurch vorkommen, dass ich wie schon einmal an die 40.000 - 50.000 Dateien unnötig drauf hatte.

Jene Bilder die nicht mehr gebraucht werden, weil die Anzeigen im Archiv schon über der Maximalzeit liegen, werden ja auch wieder gelöscht.
Das funktioniert eh super - es sind nur die Laichen welche beim Import passieren können.

Das Shell-Script welches ich geschrieben habe macht eigendlich auch nix anderes.
Zuerst die Whitelist holen und dann halt die Bilder in einen neuen Ordner kopieren, welche den whitelisteinträge entsprechen um am Schluß den alten Ordner zu löschen und den neuen umzubenennen.

Schöner wäre es und vielleicht soger eleganter und performanter anhand der Whitelist jene Dateien in diesem Ordner zu belassen und alle anderen zu löschen die eben nicht der Whitelist entsprechen.
Aber da steig ich leider föllig aus, weil ich mich mit der Shellprogrammierung und den Linuxbefehlen noch nicht soooo gut auskenne.
Mit Zitat antworten
  #6 (permalink)  
Alt 22-07-2007, 22:34
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du weißt doch wenn bei 3) ein Fehler auftritt oder? Warum löscht du dann nicht gleich alle Dateien, du hast doch den Inhalt der Datei?
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #7 (permalink)  
Alt 23-07-2007, 02:24
web4free
 Newbie
Links : Onlinestatus : web4free ist offline
Registriert seit: Jun 2005
Beiträge: 108
web4free ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Nun ja - ich hatte vorher schon manches mal Probleme mit gewissen Sonderzeichen, die Händler eingegeben haben und damit den Import mehr oder weniger vernichtet haben.
Das ist aber bereits mit den Schnittstellen alles abgeklärt und es kommen eh nur noch genormte Datensätze rüber - was zusätzliche Abfrage in der Schwakedatenbank für die deutschen und andere DB's für die anderen Länder erspart :-)

Mittlerweile ist es wirklich soweit sauber wie möglich und es sollten eigendlich keine "Laichen" mehr vorhanden sein.
Zur Kontrolle will ich aber schon so einmal im Monat über Nacht diesen Ordner säubern.

Auch wenn ich zur Zeit mit der 400GB HDD keine Platzprobleme habe - wer will schon unnötige GB's verbraten.

Ich wäre ja schon froh, wenn ich einfach nur die Summe der Dateien welche in diesem Ordner sind herausfinden könnte.

lg.
Werner
Mit Zitat antworten
  #8 (permalink)  
Alt 23-07-2007, 22:24
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Ich wäre ja schon froh, wenn ich einfach nur die Summe der Dateien welche in diesem Ordner sind herausfinden könnte.
Entweder durchgehen und zählen oder shell-Ausgabe parsen.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:48 Uhr.