SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 17.07.2010, 18:48:17
arthurdent arthurdent ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 40
Beiträge: 4
Imagick Bildverarbeitung Skript (Memory Leak ?)

Hallo zusammen,

ich bin neu hier und habe ein Problem mit einem PHP-Skript. Es handelt sich um ein Skript für eine Community-Seite, welches Bilder verkleinern und drehen soll. Für die Bildverarbeitung verwende ich Imagick.

Bei Lasttests mit JMeter habe ich festgestellt, dass der Arbeitsspeicher (24GB) des Apache-Servers nach einiger Zeit voll läuft. Offenbar steht irgendetwas im Arbeitsspeicher weiter zur Verfügung nachdem das Skript schon beendet ist.

Ich benutze Imagick zum ersten Mal und weiß nicht ob dabei Memory Leaks entstehen können. Eventuell liegt es auch am Testplan und die Sessions werden zu lange im Arbeitsspeicher gehalten.

Testskript:

Code:
Threadgroup
->Cookie Manager
->Bilddatei wird hochgeladen
->Bilddatei wird verkleinert und gedreht
Für alle Testverbindungen wird keepalive verwendet (bin nicht sicher ob das wichtig ist).

PHP-Skript:

PHP-Code:
$db = @ mysql_connect ("localhost""root""test")
or die (
'Konnte keine Verbindung zur Datenbank herstellen');
$db_select = @ mysql_select_db ("test");

@
session_start();

//Max. Abma¤e laden        
$imagick = new Imagick($file);
                
//Imagedaten holen
$size $imagick->getImageGeometry(); 
$width intval($size['width']);
$height intval($size['height']);
        
//Image auf maximale Gr?¤e strecken/verkleinern
$rheight $rwidth $height $width;
                                    
//Resampelte Version erstellen
$newname $path.$id."_0.".$ext;
$smaller $path.$id."_0_sm.".$ext;
$imagick->thumbnailImage($rwidth$rheight);
$imagick->writeImage($newname);
$imagick->destroy();
            
//Thumbnail erstellen
$tmbname $path.$id.'_tmb.jpg';
$tmb = new Imagick();
$tmb->readImage($newname);
$rotateimg $tmb->clone();
$tmb->stripImage();
$tmbwidth $width 131 $height;
$tmb->thumbnailImage($tmbwidth131);
$tmb->writeImage($tmbname);
$tmb->destroy();

//Gedrehte Versionen erstellen
$rotateimg->rotateImage(new ImagickPixel(), 270);
$rotateimg->writeImage($path.$id."_90.".$ext);
$rotateimg->rotateImage(new ImagickPixel(), 270);
$rotateimg->writeImage($path.$id."_180.".$ext);
$rotateimg->rotateImage(new ImagickPixel(), 270);
$rotateimg->writeImage($path.$id."_270.".$ext);
$rotateimg->destroy();
        
$_SESSION['own'][] = array($id$width$height$rwidth$rheight);
        
unset(
$imagick$thumbnail$rotateimg$size);
mysql_close($db);
exit(); 
Ich wäre für Eure Hilfe echt dankbar. Bin nämlich mittlerweile mit meinem Latein am Ende.

Vielen Dank im Voraus.

Gruß Christian
Mit Zitat antworten
  #2  
Alt 17.07.2010, 20:06:25
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: Imagick Bildverarbeitung Skript (Memory Leak ?)

ich habe noch nicht mit imagick gearbeitet... bei der verwendung von gdlib muss der speicher mittels imagedestroy manuell freigegeben werden; könnte es daran liegen?

cx
Mit Zitat antworten
  #3  
Alt 17.07.2010, 20:15:28
arthurdent arthurdent ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 40
Beiträge: 4
AW: Imagick Bildverarbeitung Skript (Memory Leak ?)

Danke für Deine Antwort.

Bei imagick kann man die Bilder mit $bildvariable->destroy() aus dem Speicher löschen.

Wenn ich mir den zugewiesenen Speicher für die Bilder nach destroy() ausgeben lasse kommt immer 0 Bytes heraus.

Bin auch nicht wirklich sicher, ob es am Skript liegt. Eventuell liegt es auch an der Testumgebung. Es würde mich nur sehr beruhigen, wenn mir jemand sagen kann, dass das Skript in Ordnung ist oder mich auf einen Fehler hinweist.
Dann könnte ich zumindest die eine oder andere Unbekannte ausschließen.
Mit Zitat antworten
  #4  
Alt 18.07.2010, 13:19:52
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: Imagick Bildverarbeitung Skript (Memory Leak ?)

ich persönlich kann nichts zum thema imagick beitragen. hast du das error reporting passend eingestellt? generell... warum arbeitest du mit dem @-operator zur unterdrückung von fehlermeldungen?

cx
Mit Zitat antworten
  #5  
Alt 18.07.2010, 13:26:45
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: Imagick Bildverarbeitung Skript (Memory Leak ?)

bitte gib einen hinweis, wenn du das problem in einem anderen forum (zeitversetzt / etwas später) zur diskussion stellst. kein ding - wir können nicht immer helfen, wenn's irgendwo hängt.

für die zukunft behalte bitte das stichwort crossposting im hinterkopf.

viel erfolg,
cx
Mit Zitat antworten
  #6  
Alt 18.07.2010, 13:59:05
arthurdent arthurdent ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 40
Beiträge: 4
AW: Imagick Bildverarbeitung Skript (Memory Leak ?)

Werd ich beim nächsten Mal machen, sorry. Dachte das wäre dann unerlaubte Werbung für ein anderes Forum. Ich werde morgen noch einmal Tests laufen lassen und dann auch hier posten, falls und wie das Problem behoben wurde.
Mit Zitat antworten
  #7  
Alt 18.07.2010, 14:03:12
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: Imagick Bildverarbeitung Skript (Memory Leak ?)

Zitat:
Zitat von arthurdent Beitrag anzeigen
Ich werde morgen noch einmal Tests laufen lassen und dann auch hier posten, falls und wie das Problem behoben wurde.
prima :-)

cx
Mit Zitat antworten
  #8  
Alt 20.07.2010, 20:51:53
arthurdent arthurdent ist offline
Anfänger
 
Registriert seit: Jul 2010
Alter: 40
Beiträge: 4
AW: Imagick Bildverarbeitung Skript (Memory Leak ?)

Ergebnis:

Das Skript ist so wie es ist völlig in Ordnung. Das Problem war ein anderes. Ich hatte die Lasttests zur Überprüfung der Verbesserungen nie bis zum Ende laufen lassen, da die Arbeitsspeicher-Nutzung immer weiter angestiegen ist. Das ist aber bei Linux-Servern ganz normal, da die Server den Speicher immer erst bei Bedarf wieder freigeben. Manchmal fängt man an Gespenster zu sehen. Vielen Dank für die Hilfe. Thema kann geschlossen werden.
Mit Zitat antworten
Antwort

Stichworte
imagick, memory, session


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Allowed memory size und Thumbnails? Dungeonwatcher PHP Grundlagen 19 09.11.2009 17:26:04
Habe eine Frage zu einem Skript Boomer PHP Grundlagen 5 09.11.2003 22:36:14


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:07:22 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt