Bilder verkleinern

paini2008

Gesperrt
hallo

und zwar hab ich ein Problem:

ich benutze deises Script:

PHP:
<?php
error_reporting(E_ALL);

function erzeugeBild( $upload, $newHeight, $name )
{
      if (!$info = getimagesize($upload))
      {
          echo "kein GetImageSize";
          return false;
      }
           
      //echo "width: "  . $info[0] . "<br/>";
      //echo "height: " . $info[1] . "<br/>";

      //create crude aspect ratio:
      $aspect = $info[0] / $info[1];
      $newWidth = round( $newHeight/$aspect );
      //echo "$newWeidth <br/>";

      $src = @imagecreatefromjpeg("$upload");
      if ( !$src )
           return false;

      $tmp = @imagecreatetruecolor( $newHeight, $newWidth );
      imagecopyresampled( $tmp, $src, 0, 0, 0, 0, $newHeight,
                                     $newWidth, $info[0], $info[1] );

      imagejpeg( $tmp, $name, 100 );
      imagedestroy( $src );
      imagedestroy( $tmp );
      return true;
}

$path = "images/";
if($dir=opendir($path))
{
 while($file=readdir($dir))
 {
    if (!is_dir($file) && $file != "." && $file != "..")
    {
        if (substr($file, strripos($file, ".")) == ".jpg")
        {
            echo "Bearbeite: ";
            $files[]=$file;
            $upload = $path.$file; // hier hatte ich "$path" vergessen
            echo $upload."<br>";
            include "titel.php";
            
            $alias="thumb/";
            $name="$alias"."$file";
            erzeugeBild( $upload, $newHeight, $name );
        } else {
            
            echo "bearbeite nicht: ".$file." -> ".substr($file, strripos($file, "."))."<br />";
        }
    }
 }
closedir($dir);
}

?>

um bilder aus einem Verzeichniss zu verkleinern und in einem anderes wieder abspeichern

das geht auch woeit alles aber

aber wennn es mehrere Bilder sind (so in etwa tausend oder so)
kommt eine Fehlermeldung:

Code:
Fatal error: Maximum execution time of 30 seconds exceeded in /xxx/xxx/xxx/xxx/xxx/xxx/xxx/xxx/verkleinern.php on line 26

ich vermute mal das das heißt der sever ist überlastes....

wie kann ich das jetzt ändern das das nicht mehr kommt gibt es einen möglichkeit das script zu ändern?

Vielen dank schonmal im vorraus!

Lg nico
 
Falls du zugriff auf die php.ini hast versuch einfach mal die max execution time raufzu setzen.
Ansonsten kann man da wenig machen denn am Script liegt es soweit ich das sehe nicht.
Ansonsten mach mal alle @ vor den funktionen rasus. Das unterdrücktz nur alle Fehler da hilft das error reporting auch nicht mehr.
Evtl liegt es auch an einer der funktionen das die einen Fehler ausspucken.

//EDIT: Jetzt erst gelesen: Du willst 1000 Bilder damit bearbeiten?
Na is klar das das nicht gehen kann.
Bau dein Script so um das es immer nur eins bearbeitet. Und dann rufst du das ganze per cron job immer wieder auf! Anders gehts afaik leider nicht
 
Zuletzt bearbeitet:
wie geht das das er jetzt jedes einzeln bearbeitet könntest du mir vllt n bisschen helfen?

Viielen dank schonmal

Lg Nico
 
Nun ja du musst jetzt einfach statt tausend einfach weniger Bilder bearbeiten und das script dann per Cronjob neu starten
 
Nebenbei gesagt ist es bei einigen tausend Bildern besser gleich auf ein Bildbearbeitungsprogramm mit automatisierungs Funktionen zu setzen.

Was du auch tun könntest wenn der Server sonst kaum verwendet ist unter erzeugeBild() das Timelimit zu resetten... per set_timelimit(30)
 
Ist das denn ne einmalige Sache oder kommen da öfter neue Bilder hinzu?
Denn falls da öfter neue zu kommen würde ich per Cronjob prüfen ob es neue Bilder gibt und wenn sie vorhanden sind dann machste se auch kleiner - oder wenn sie per Formular hochgeladen werden direkt beim hochladen verkleinern.

Denn so wie das immoment ist kann das ja kein dauerzustand sein und falls das ne einmalige Sache ist kannst du ja erstmal die Tricks mit dem ini_set und Timelimit-Reset nutzen.

lg
 
Zurück