Codeoptimierung PHP

Dieses Thema Codeoptimierung PHP im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von Warlock0, 14. März 2006.

Thema: Codeoptimierung PHP So, ich hab hier ein wenig PHP Code der aber IMHO nicht wirklich optimal programmiert ist. Der Code sollte in einem...

  1. So, ich hab hier ein wenig PHP Code der aber IMHO nicht wirklich optimal programmiert ist. Der Code sollte in einem Ordner nach Dateien mit den Namen Folie0.png, Folie1.png usw suchen, und die nächste zu erstellende Datei dementsprechend benennen.Knapp zusammengefasst besitzt dann $Filecounter den Wert der Anzahl der Dateien + 1. Das funktioniert auch, aber irgendwie denk ich mir das das auch eleganter als mit ner 1000 Durchlauf For Schleife gehen sollte.

    Code:
    	$Filecounter = 1;
    	
    				//Suchen der bisher erstellten Dateien --> Nummerierung
    				
    	for($Filename=0;$Filename<1000;$Filename++)
    	{
    	  if (file_exists(Folien/Folie.$Filecounter..png)) 
    		{
    		$Filecounter++;		
    		}										
    	}	
    
    PS: Mein anderes Problem ist auch noch immer nicht gelöst, hoffe es fällt noch jemandem was ein: :-[
    http://www.wintotal-forum.de/index.php/topic,108208.0.html
     
  2. Hi

    Du könntest den Aufwand reduzieren indem du statt einer linearen Suche eine binäre Suche durchführst.
    Du fängst bei 512 an ,wenn es nicht existiert dann gehst du zu 256 etc.

    Gruß, Michael
     
  3. noch ne Möglichkeit:
    Code:
    <?php
    $dir = Folien/;
    $name = Folie;
    $extension = \.png; # Punkt muss maskiert werden
    
    if($fh = @opendir($dir)) {
    	while($file = readdir($fh)) {
    		if(!ereg($name.[0-9]+.$extension, $file)) continue;
    		$arr[] = $file;
    	}
    }
    
    natcasesort($arr); # Array sortieren
    $max_file = array_pop($arr); # letzes Array-Teil
    $nr = ereg_replace($name,,$max_file);
    $nr = ereg_replace($extension,,$nr);
    echo $nr;
    ?>
    
    Das Verzeichnis brauch nur 1x gelesen zu werden ;)

    Für die neue Datei brauchst du dann nur ++$nr zu machen ;)
     
  4. THX funktioniert.
     
  5. So, aus rgendeinem Grund läufts jetzt nicht mehr, deswegen dache ich ich hohl den Thread hoch bevor ich nen neuen mache....

    Das ist mein aktueller Code:

    Code:
    $dir = Userdata/.$Username./Folien/;
    			 $name = Folie;
    			 $extension = \.jpeg; # Punkt muss maskiert werden
    
    				if($fh = @opendir($dir)) 
    					{
    					while($file = readdir($fh)) {
      
      echo $file.<br />;
      
      if(!ereg($name.[0-9]+.$extension, $file)) continue;
      $arr[] = $file;
    }
    					}
    
    			natcasesort($arr); # Array sortieren
    			$max_file = array_pop($arr); # letzes Array-Teil
    			$nr = ereg_replace($name,,$max_file);
    			$nr = ereg_replace($extension,,$nr);
    			$nr = $nr + 1;
    			
    			echo $nr;
    In die Variable $nr wird immer 1 geschreiben, was mich annehmen lässt das sie Grundsätzlich 0 ist (vor $nr = $nr + 1;)

    Das ist meine Ausgabe:

    Der 1er unten ist das Echo von $nr

    Funktioniert hats übrigens nur lokal am Testserver, am richtigen Server macht er die Fehler

    * Themen zusammengeführt *
     
  6. Gerade nachgebaut, funktioniert Tadellos ;)

    Stimmt das Verzeichnis => $dir ?? (Groß-/Kleinschreibung)
    Stimmt der Folienname => $name ?? (Groß-/Kleinschreibung)
    Stimmt die Erweiterung => $extension ?? (Groß-/Kleinschreibung)
     
  7. Jep hattest Recht, thx...
    Ich erstell in dem Script ja über ein Commandlinetool jpg Files - als Parameter will der für den Dateityp jpeg, speichert dann aber als jpg..und ich hab natürlich nach jpeg gesucht.

    THX