Ordner auslesen und in DB speichern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ordner auslesen und in DB speichern

    Hallo,

    ich möchte mehrere Ordner auslesen. Insgesamt so ca 15000 Dateien.
    Das Script so schauen ob die jeweilige Datei in der DB steht und wenn nicht dann halt reinschreiben. So jetzt meine Frage: Ich lese jeden Ordner mit ner while-Schleife aus. Kann ich bei jedem Durchlauf erst die DB checken und dann gegebenenfalls reinschreiben. Ich dachte mir vielleicht mit sleep() zu arbeiten, damit die DB nicht zusammenbricht.
    Oder wie würdet ihr so was machen??

  • #2
    sleep wäre 'ne Möglichkeit, jo...

    oder du machst's auf die Rambo-Methode....

    erzeuge 'nen unique index auf die Spalten die du für die Überprüfung selecten würdest.
    Dann lässt dein Script nur mit insert statements durchrödeln.
    Wenn du die fehlermeldungen dann nicht mit 'nem "die" quittierst wie man's nomralerweise machen sollte...
    PHP-Code:
    @mysql_query($sql) or die (mysql_error()."<br>$sql"); 
    dann sorgt der (richtig erzeugte) unique index dafür, dass nur eindeutige einträge geschrieben werden.

    Damit sparst dir die Selects und die scriptseitige Auswertung.

    Fiese Methode, aber dafür gitbt's ja die Constraints.

    Aber: wenn du gegen 'ne MySql DB mit MyISAM Tabelle fährst, dann kann eine rasche Folge von Inserts trotzdem mächtig lange dauern, weil MyISAM Tabellen bei jeder manipulativen Operation ein Table Lock durchführt und bei jedem Insert die folgenden Queries warten müssen.

    Kommentar


    • #3
      Original geschrieben von ankh

      oder du machst's auf die Rambo-Methode....

      erzeuge 'nen unique index auf die Spalten die du für die Überprüfung selecten würdest.
      Dann lässt dein Script nur mit insert statements durchrödeln.
      Wenn du die fehlermeldungen dann nicht mit 'nem "die" quittierst wie man's nomralerweise machen sollte...
      Blödsinn!

      dafür gibt es INSERT [COLOR=red]IGNORE[/COLOR] INTO
      TBT

      Die zwei wichtigsten Regeln für eine berufliche Karriere:
      1. Verrate niemals alles was du weißt!


      PHP 2 AllPatrizier II Browsergame

      Kommentar


      • #4
        hoppla...

        was man stimmt....

        aber um meine (durchaus zweifelhafte) ehre zu verteidigen:
        is net ansi SQL92 ...
        Zuletzt geändert von ankh; 19.05.2005, 22:44.

        Kommentar


        • #5
          HI,
          danke für die Antworten.
          Ich denke ich werde mit sleep arbeiten. In meinem Fall ist es eigentlich egal wie lange das Script braucht, da es eh nachts läuft. Außerdem hatte ich noch vor eine Statustabelle einzurichten um zu sehen ob in der DB einträge von Daten sind, die nicht mehr aufm Server liegen um diese dann zu löschen.
          Wie lange sollte den das Script "sleepen" und vorallem nach jedem durchlauf?? oder kann ich meinet wegen 20 Durchläfe machen??

          Danke

          Kommentar


          • #6
            also, ich hab mir eben noch aufgrund eines anderen tests ein script geschrieben, dass einfach mal 100.000 Zeilen in ne MySql Tabelle peitscht...

            das geht in < 10 Sek.

            Wenn du nu noch die Selects dazwischen drückst....

            k.a. ob du überhaupt sleep() nutzen musst. Glaub ich gar nicht mal.

            Wenn du das in einer Schleife durchlaufen lässt, brauchst auch nur eine Verbindung zur DB. Also wird dich der Server nicht wegen zu vieler connections blockieren.

            Probier's doch einfach mal mit selects ohne sleep aus. Wenn 's irgendwo knallt, hast etwa 1-2min. deines Lebens verschwendet.

            Fernsehen kostet da wesentlich mehr Zeit

            Was mir da allerdings noch einfällt... achte auf die max_execution_time in der php.ini.

            Defaultmässig steht die auf 30sek. und das könnt'n bisschen knapp werden.

            Kommentar


            • #7
              Hi,
              danke für die Antwort:-)
              Ich setzte das timelimit mit set_time_limit() nach oben:-)
              Ich habe halt nur die befürchtunng, dass mir Datensätze verloren gehen könnten.
              Ich werde es aber einfach mal testen.

              Vielen Dank :-)

              Kommentar

              Lädt...
              X