Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu glob()

Einklappen

Neue Werbung 2019

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

  • Frage zu glob()

    Hallo,

    wie schon gesagt geht es um ein Problem mit [MAN]glob()[/MAN]

    Ich muß überprüfen ob eine Datei vorhanden ist.
    Da ich den genaen Dateinamen aber nicht kenne, muß ich das mit
    genannter Funktion machen wegen der Benutzung von Jokerzeichen.

    Im Verzeichnis sind z.B. folgende Dateien:

    Code:
    1-1.jpg
    1-1-home.jpg
    1-1-large.jpg
    2-2.jg
    2-2-home.jpg
    ...
    40-40.jpg
    40-40-large.jpg
    42-41.jpg
    42-41-home.jpg
    43-42.jpg...
    Mein Quelltext sieht so aus:
    PHP-Code:
    if(count(glob($path.$zaehler."-"."*.jpg"))>0)
    {
       
    $text="leer";
    }
    else{
       
    $text="voll";

    Das funktioniert ja auch soweit. Leider ist dieser Weg von der Performance sehr schlecht.
    Es gibt im Verzeichniss 35000 Bilder. Das Glob steht in einer Schleife,
    die rund 12000 mal durchlaufen wird. Wißt ihr was ich meine

    Jetzt meine Frage. Kann ich glob nach dem 1. Fund beenden? Also das sobald eine Übereinstimmung gefunden wurde aufgehört wird zu suchen?
    Oder gibt es einen besseren Weg?

    Ich hoffe auf Eure Hilfe


  • #2
    Systemebene?
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Systemebene?
      Was bitte meinst du?

      Kommentar


      • #4
        Funktionen Deines Betriebssystems nutzen. Ansonsten mal ne Info, warum der Name nicht bekannt ist.
        Code:
        ls -la |grep -v '^d' |grep 'jpe?g$'
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Der Name ist nicht bekannt aus einem einfachen Grund.
          Die Bilder werden angelegt aus der id und einem Zähler.
          Das klappt ja auch soweit. Also id1 Zähler 1 usw.
          Wenn aber der DS mit der id 41 kein Bild hat, wird er ja ausgelassen.
          Darum erhöht sich die ID um 2, der Zähler aber nur um 1.
          Deshalb kann man den Dateinamen nicht korrekt bestimmen.

          Was meinst du mit

          ls -la |grep -v '^d' |grep 'jpe?g$'

          Kommentar


          • #6
            [MAN]exec[/MAN]
            "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

            Kommentar


            • #7
              Darum erhöht sich die ID um 2, der Zähler aber nur um 1.
              Deshalb kann man den Dateinamen nicht korrekt bestimmen.
              Das erklärt überhaupt nichts. Warum hast Du in diesem Fall die ID nicht? Warum willst Du ein Bild auslesen, zu dem Du die ID nicht hast?
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Es geht um den Import von ca. 12000 Produkten in einen Shop.
                Werden die Produkte importiert, wird ein Bild von einem Server
                geholt (mittels Bild-URL) und auf dem eigenen Server gespeichert.
                Des weiteren werden noch 7 weitere Bilder angelegt. Als Name
                für das Bild, wird die Produkt-ID genommen und ein interner Zähler.
                Darum 1-1.jpg, 2-2.jpg etc. Die anderen 7 Bilder laß ich jetzt mal außen vor.

                Ist jetzt aber für ein Produkt kein Bild vorhanden, wird zwar die ID
                erhöht, jedoch der Zähler nicht.
                Somit haben wir dann 30-29.jpg, 31-30.jpg etc.

                Darum benötige ich ja das Jokerzeichen. Aber glob listet dann ja alle 8 Dateinamen auf. Was bei 35000 Bildern zu lange dauert.
                Deswegen die Frage ob ich auch nur nach der 1. Übereinstimmung suchen kann?

                Kommentar


                • #9
                  Zitat von pfump Beitrag anzeigen
                  Darum benötige ich ja das Jokerzeichen. Aber glob listet dann ja alle 8 Dateinamen auf. Was bei 35000 Bildern zu lange dauert.
                  Deswegen die Frage ob ich auch nur nach der 1. Übereinstimmung suchen kann?
                  Nur mit einer Verfeinerung des Filters (so sind Wildcards nunmal).

                  Wie wäre es denn, wenn NEUE Bilder in einem HOTFOLDER landen und von dort verschoben werden, damit KEINE 35.000 Bilder in einem Verzeichnis liegen?
                  Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                  Kommentar


                  • #10
                    Ich versteh das Numerierungsprinzip nicht! Wieso denn 30-29.jpg, 31-30.jpg und nicht 30-1.jpg, 31-2.jpg?! Wieso geht nicht einfach file_exists?
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      Speichere doch einfach in einer mysql-Tabelle, welche Bild-Dateinamen du auf deiner Platte hast.
                      PHP-Code:
                      if ($var != 0) {
                        
                      $var 0;

                      Kommentar

                      Lädt...
                      X