php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.04.2011, 19:13  
Neuer Benutzer
 
Registriert seit: 27.04.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
crueL befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Es kommt ausschließlich auf die Maße in Pixeln an. Für DPI interessiert sich die GDLib nicht (bzw. „Computergrafik“ allgemein) - das ist ein Wert, der Drucker interessiert.

Und die GDLib arbeitet intern mit 32 Bit, also 4 Byte pro Pixel (RGB+Transparenz).
Also die Auflösung der Originalbilder beträgt 1000 x 1000 Pixel

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Wo kommt der 500er Serverfehler her? LOG Dateien einsehen und Ursache herausfinden! Sollte es so sein, das ein Teil von PHP (GD Extension) diesen Fehler auslöst, kann auch das zu Speicherlecks führen
Das wollte ich herausfinden, daher kam auch die Mail an 1 & 1 zustande.
Ich hatte via Google einen Beitrag gefunden, wie man die Fehlermeldungen bei 1 & 1 in eine Datei umleitet, allerdings vermutete ich zu diesem Zeitpunkt, dass diese Fehlermeldung in den Apache Error-Logs sein müsste, an die ich nicht rankam.

Ich habe dann versucht in XAMPP die gleichen Werte in der php.ini zu benutzen, wie die auf dem Webserver, um diesen Fehler zu reproduzieren und vielleicht eine Fehlernachricht auf meinem PC finden zu können, doch leider Trat der Fehler lokal nicht auf, trotz der angepassten php.ini

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Das ist eine typsiche "funzt nich" Fehlerbeschreibung. Welchen Ansatz hast du (hast du überhaupt einen) und was bedeutet kläglich gescheitert?
Wie das am Ende aussah, kann ich dir nicht mehr genau sagen, weil ich den Code rausgeschmissen habe, aber die Grundidee war, dass ich in den beiden For-Schleifen ein "header("Location: http://www.Link.zum/Script");" mache und die Zählvbariablen in einer Sessionvariable ablege, damit ich diese nach dem Aufruf wieder verwenden kann. Ich hab dann irgendwann versucht alle Variablen als Session-Variablen zu nutzen und da bekam ich bei Aufruf des Scripts nur noch 'ne weiße Seite. Da mir nicht wirklich klar war, ob dieser Ansatz überhaupt Sinn macht, habe ich das alles rückgängig gemacht und versucht mich auf das Problem zu konzentrieren, dass ich vielleicht einfach nicht gut programmiert habe und das alles vielleicht doch bei weitem zu Umständlich ist, daher habe ich mich dann hier registriert, um herauszufinden, ob ich total auf dem Holzweg bin, oder das schon in die richtige Richtung geht.

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Ist das die Tages-Gesamtmenge, oder sind das bei jedem Aufruf des Scripts soviele? Wenn du bereits Informationen zu 1000 Dateien im Speicher hälst, bevor die eigentliche Bildverarbeitung startet, geht das natürlich von deinem zur Verfügung stehenden Speicher ab.
Diese Menge an Bildern wird es vermutlich nur 5-6 mal im Jahr geben, meist soll das Script nur nach aktualisierten (via Cronejob) Bildern, bzw überhaupt Bildern im _watchFolder gucken und wenn welche vorhanden sind diese in die einzelnen Ordner verteilen/resizen.

Wie gesagt, ich stapfe hier etwas im Dunklen.
Danke vielmals, die Sache mit den Speicherverbrauch werde ich noch mal testen, das hab ich auch schon mal gemacht.

Gruß
Flo

edit, habe mal einige Ausgaben gemacht zum Speicher (mit memory_get_usage()), ich häng das hier mal an und hoffe, dass es das Forum nicht zu voll müllt:

Code:
BCC-Liste erstellt - Memory: 109840
Bildnamen ins Array geschrieben - Memory: 111684
Backup vom _watchFolder - Memory: 112120
$allArray erzeugt - Memory: 115168
Verzeichnisse erstellt - Memory: 115168
Seitenverhaeltnisse - Memory: 116216
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 1751280_709.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2051700_309.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2370702_253.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2651600_381.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2651700_709.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2651701_309.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2670700_302.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2719201_253.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2719201_302.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2719201_309.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2719201_700.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2719201_709.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 10179244
Bild erzeugt: 2719201_710.jpg - Memory: 10179296
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 1751280.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2051700.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2370702.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2651600.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2651700.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2651701.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2670700.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2719201.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2719201.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2719201.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2719201.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116444
ImageCopyResampled - Memory: 6969644
Bild erzeugt: 2719201.jpg - Memory: 6969692
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 6969736
Bild erzeugt: 2719201.jpg - Memory: 6969784
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 1751280.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2051700.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2370702.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2651600.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2651700.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2651701.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2670700.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201.jpg - Memory: 5849496
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 1751280.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2051700.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2370702.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2651600.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2651700.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2651701.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2670700.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201.jpg - Memory: 5262512
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 1751280_709.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2051700_309.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2370702_253.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2651600_381.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2651700_709.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2651701_309.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2670700_302.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201_253.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201_302.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201_309.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201_700.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201_709.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5849448
Bild erzeugt: 2719201_710.gif - Memory: 5849500
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 1751280_709.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2051700_309.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2370702_253.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2651600_381.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2651700_709.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2651701_309.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2670700_302.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201_253.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201_302.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201_309.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201_700.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201_709.gif - Memory: 5262516
Seitenverhaeltnisse - Memory: 116528
ImageCopyResampled - Memory: 5262464
Bild erzeugt: 2719201_710.gif - Memory: 5262516

Geändert von crueL (27.04.2011 um 19:39 Uhr).
crueL ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 27.04.2011, 19:19  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
da hiermit a) die Pixeldichte auf Monitoren und damit b) die Erscheinungsgröße von Grafiken beeinflusst wird.
Jein. Kein typischer Screendesigner wird nach Lineal planen (Grafik soll später 5cm groß sein), sondern ob der Fülle an Bildschirmauflösungen einfach auf Pixelmaß arbeiten.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 27.04.2011, 19:22  
Supermoderator HD
 
Benutzerbild von Manko10
 
Registriert seit: 16.03.2008
Beiträge: 8.709
PHP-Kenntnisse:
Fortgeschritten
Manko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende ZukunftManko10 hat eine strahlende Zukunft
Standard

Hab ich auch nicht behauptet. Nur kann ein Bild eben trotzdem eine physische Größe haben. Letztere wird selbstverständlich nur beim Druck oder entsprechender Pixelgröße korrekt dargestellt, da sonst halbe Pixel simuliert werden müssten (1px muss dazu einem Pt entsprechen, was bei 72dpi-Monitoren gegeben ist).
Aufgrund der verschiedenen Monitorauflösungen und Größen ist ein maßgenaues Arbeiten auch gar nicht mehr möglich. Das ging nur damals zu CRT-Zeiten mit genormter Pixeldichte.
__________________
Refining Linux Advent Calendar series “24 Outstanding ZSH Gems
Manko10 ist offline  
Alt 28.04.2011, 11:05  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Wie gesagt, ich stapfe hier etwas im Dunklen.
Memoryleaks sind auch keine zu erkennen (zumindest keine großen, es gehen schon ein paar Byte verloren, aber das kann auch mit Speicherfragmentierung zusammenhängen). 10MB sind zwar schon ne Hausnummer, aber da ist ja noch eine Menge Luft nach oben.

Ansonsten läuft auf dem Server nichts anderes, was zwischenzeitlich den 32MB RAM Pool belegen könnte? Der Cronjob kaskadiert auch nicht oder wird mehrfach aufgerufen?

Momentan ist der 500er Serverfehler noch ein Ansatz, den du verfolgen solltest. Da könnte tatsächlich der Knackpunkt liegen. Sollte sich das Problem hartnäckig halten, würde ich an deiner Stelle auch mal andere Hoster antesten. Tritt das Problem dort auch auf, liegt das Problem warscheinlich im Code, anderenfalls könnte es einfach am Server liegen (alte Hard- oder Software, schlechte Konfiguration, Überlastung des Systems o.ä.). PHP Versionen vergleichen, Bugdatabase nach bekannten Problemen durchsuchen... naja, da kann man sich ranhalten, wenn man noch auf der Suche nach Gründen ist

Zitat:
Wie das am Ende aussah, kann ich dir nicht mehr genau sagen, weil ich den Code rausgeschmissen habe, aber die Grundidee war, dass ich in den beiden For-Schleifen ein "header("Location: http://www.Link.zum/Script");" mache und die Zählvbariablen in einer Sessionvariable ablege, damit ich diese nach dem Aufruf wieder verwenden kann. Ich hab dann irgendwann versucht alle Variablen als Session-Variablen zu nutzen und da bekam ich bei Aufruf des Scripts nur noch 'ne weiße Seite. Da mir nicht wirklich klar war, ob dieser Ansatz überhaupt Sinn macht, habe ich das alles rückgängig gemacht und versucht mich auf das Problem zu konzentrieren, dass ich vielleicht einfach nicht gut programmiert habe und das alles vielleicht doch bei weitem zu Umständlich ist, daher habe ich mich dann hier registriert, um herauszufinden, ob ich total auf dem Holzweg bin, oder das schon in die richtige Richtung geht.
Die Grundidee war schon nicht so verkehrt, allerdings kann man in der CLI Version keine Cookies benutzen (vermutlich der Grund, weswegen dein Sessionhandling nicht funktioniert hat).

Du brauchst Sessions aber nicht unbedingt, es gibt andere Wege, z.B. könnte das Script pro Aufruf immer nur 25 (mehr/weniger) Dateien verarbeiten und sich dann beenden. Die bearbeiteten Dateien müssen aber verschoben werden, damit sie beim nächsten Durchlauf nicht wieder verarbeitet werden.
Wenn du nicht verschieben willst, arbeite mit einer gesonderten Blacklist, eine neue Datei in die du die Namen der bereits bearbeiteten Dateien abspeicherst. Bei dieser Variante sollte regelmässig aufgeräumt werden, d.h. Dateien aus dem watch-Folder löschen, und wenn das passiert, nicht vergessen, den Namen auch von der Blacklist zu entfernen.
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
Alt 28.04.2011, 12:21  
Neuer Benutzer
 
Registriert seit: 27.04.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
crueL befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von lstegelitz Beitrag anzeigen
...
Du brauchst Sessions aber nicht unbedingt, es gibt andere Wege, z.B. könnte das Script pro Aufruf immer nur 25 (mehr/weniger) Dateien verarbeiten und sich dann beenden. Die bearbeiteten Dateien müssen aber verschoben werden, damit sie beim nächsten Durchlauf nicht wieder verarbeitet werden.
Wenn du nicht verschieben willst, arbeite mit einer gesonderten Blacklist, eine neue Datei in die du die Namen der bereits bearbeiteten Dateien abspeicherst. Bei dieser Variante sollte regelmässig aufgeräumt werden, d.h. Dateien aus dem watch-Folder löschen, und wenn das passiert, nicht vergessen, den Namen auch von der Blacklist zu entfernen.
Dann habe ich doch aber das Problem, dass erst 25 Bilder abgearbeitet werden und anschließend aus dem watchfolder entfernt werden. Somit sind die Bilder doch beim nächsten Durchlauf, für den nächsten Ordner in dem die Bilder in anderer Größe benötigt werden gar nicht mehr im Original vorhanden.
Die Bilder werden ja nicht nur nur ein Mal verkleinert und verschoben, sondern gleich 6 Mal: In 6 verschiedene Ordner in 6 verschiedenen Größen und verschiedenen Formaten.

Ich glaube ich verstehe einfach nicht, wie ich das Script erneut aufrufen muss, damit ich an einer bestimmten Stelle weitermachen kann, ohne dass die benötigten Variablen weg sind.

Vielleicht sollte ich statt der For-Schleife, die mein $i und $j immer auf 0 setzt einfach eine While-Schleife nehmen und $i und $j auf den Letzten Stand setzen, aber dann muss ich auch sicher gehen können, dass die beiden Arrays, die zu Beginn des Scripts erstellt werden, immer auf die gleiche Art und in gleicher Reihenfolge erstellt werden.

Sehr verwirrend alles, ich versuch mal das umzusetzen und bedanke mich erneut für Hinweise und Tips.
Gruß
Flo
crueL ist offline  
Alt 28.04.2011, 13:54  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von crueL Beitrag anzeigen
Die Bilder werden ja nicht nur nur ein Mal verkleinert und verschoben, sondern gleich 6 Mal: In 6 verschiedene Ordner in 6 verschiedenen Größen und verschiedenen Formaten.

Ich glaube ich verstehe einfach nicht, wie ich das Script erneut aufrufen muss, damit ich an einer bestimmten Stelle weitermachen kann, ohne dass die benötigten Variablen weg sind.
Ist doch kein Problem. Soweit ich dich verstanden habe, läuft das Script als Cronjob, d.h. es wird regelmässig ausgeführt. DU führst es ja gar nicht aus, sondern der Scheduler...
Zitat:
Das Script soll täglich via Cronejob angestoßen werden.
Anstatt täglich kannst du das Script auch halbstündlich aufrufen...

Während eines Durchlaufs verarbeitet es (bis zu) 25 Originalbilder und erzeugt von jedem soviele Ausgabebilder /-formate, wie du willst. Danach entfernt es die Originalbilder aus dem watch-Folder und beendet sich... im nächsten Durchlauf dann wieder 25 Originalbilder usw.
Zu merken brauchst du dir nichts, wenn du die fertig verarbeiteten Bilder aus dem watch-Folder entfernst...
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline  
Alt 29.04.2011, 16:52  
Neuer Benutzer
 
Registriert seit: 27.04.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
crueL befindet sich auf einem aufstrebenden Ast
Standard

Ich habe das jetzt so umgesetzt:
PHP-Code:
    for( $j 0$j count($fileArray); $j++ ){
        for (
$i 0$i count($allArray); $i++){
            
//echo '<div id="r3">i (Durchlauf): ' . $i . ' | j (Bild): ' . $j . '</div>';
            
$size getimagesize($watchDir $fileArray[$j]);
            
$w $size[0]; // Width des Originalbildes
            
$h $size[1]; // Height des Originalbildes
        
            // Seitenverhaltnisse + Verkleinerung
            
if ($h >= $w) {
                
$wn round($w/($h/$allArray[$i]['h']));
                
$hn $allArray[$i]['h'];
            } else {
                
$wn $allArray[$i]['w'];
                
$hn round($h/($w/$allArray[$i]['w']));
            }
            
            
// Bilderstellung mit neuen Seitenverhaltnissen
            
$dst_img ImageCreateTrueColor($wn,$hn);
            
$dst_body imagecolorallocate$dst_img255255255 );
            
imagefill$dst_img,0,0,$dst_body );
            
$src_img ImageCreateFromJpeg($watchDir $fileArray[$j]);
            
ImageCopyResized($dst_img$src_img0000$wn$hn ,$w ,$h); // ImageCopyResampled
            
            // gif oder jpg schreiben
            
if ($allArray[$i]['typ'] == 'jpg'){
                if(
$allArray[$i]['h'] == 1000){
                    
imagejpeg($dst_img$watchPath $allArray[$i]['name'] . '/' substr($fileArray[$j], 0, -4) . '.jpg');
                } else {
                    
imagejpeg($dst_img$watchPath $allArray[$i]['name'] . '/' substr($fileArray[$j], 0, -8) . '.jpg');
                }
            } else {
                
imagegif($dst_img$watchPath $allArray[$i]['name'] . '/' substr($fileArray[$j], 0, -4) . '.gif');            
            }        
            
$bar->increase(); // Frotschrittsbalken
        

        
ImageDestroy($src_img);
        
ImageDestroy($dst_img);
        if(!
unlink($watchDir $fileArray[$j])) {
            echo 
'Beim Loeschen der Datei '$fileArray[$j] . ' trat ein Fehler auf! <br />';
        }
        
header('Location: ' $watchPath 'script.php?j=' $j);
    } 
Leider bricht das Script immer noch plötzlich ab und liefert keinen Fehler (abgesehen von dem vermuteten Apache-Fehler, an den ich bei 1 & 1 nicht rankomme): Der Browser sagt aber fertig .

Ich habe jetzt die Schleifen einfach umgedreht, so dass wenn ein Bild abgearbeitet wurde das Script neu aufgerufen wird und das bereits bearbeitete Bild gelöscht wird. Allerdings hat es ja jetzt pro Aufruf nur noch 6 Bilder zu bearbeiten, was doch gehen sollte, oder hab ich dich falsch verstanden?

Geändert von crueL (04.05.2011 um 14:25 Uhr).
crueL ist offline  
Alt 04.05.2011, 14:25  
Neuer Benutzer
 
Registriert seit: 27.04.2011
Beiträge: 5
PHP-Kenntnisse:
Anfänger
crueL befindet sich auf einem aufstrebenden Ast
Standard

Okay, ich hab es jetzt doch hinbekommen., allerdings ohne Aufruf der header()-Funktion, sondern mit 'nem Meta-Refresh:

PHP-Code:
    for( $j 0$j count($fileArray); $j++ ){
        for (
$i 0$i count($allArray); $i++){
            if (
connection_aborted ()) continue;
            if (
connection_status () != 0) continue;
            echo 
'<div id="r3">i (Durchlauf): ' $i ' | j (Bild): ' $j '</div>';
            
$size getimagesize($watchDir $fileArray[$j]);
            
$w $size[0]; // Width des Originalbildes
            
$h $size[1]; // Height des Originalbildes
        
            // Seitenverhaltnisse + Verkleinerung
            
if ($h >= $w) {
                
$wn round($w/($h/$allArray[$i]['h']));
                
$hn $allArray[$i]['h'];
            } else {
                
$wn $allArray[$i]['w'];
                
$hn round($h/($w/$allArray[$i]['w']));
            }
            
            
// Bilderstellung mit neuen Seitenverhaltnissen
            
$dst_img ImageCreateTrueColor($wn,$hn);
            
$dst_body imagecolorallocate$dst_img255255255 );
            
imagefill$dst_img,0,0,$dst_body );
            
$src_img ImageCreateFromJpeg($watchDir $fileArray[$j]);
            
ImageCopyResampled($dst_img$src_img0000$wn$hn ,$w ,$h); // ImageCopyResized
            
            // gif oder jpg schreiben
            
if ($allArray[$i]['typ'] == 'jpg'){
                if(
$allArray[$i]['h'] == 1000){
                    
imagejpeg($dst_img$watchPath $allArray[$i]['name'] . '/' substr($fileArray[$j], 0, -4) . '.jpg');
                } else {
                    
imagejpeg($dst_img$watchPath $allArray[$i]['name'] . '/' substr($fileArray[$j], 0, -8) . '.jpg');
                }
            } else {
                
imagegif($dst_img$watchPath $allArray[$i]['name'] . '/' substr($fileArray[$j], 0, -4) . '.gif');    // eventuelle Umstellung auf jpgs
            
}        
            
$bar->increase(); // Frotschrittsbalken
        

        
ImageDestroy($src_img);
        
ImageDestroy($dst_img);
        if(!
unlink($watchDir $fileArray[$j])) {
            echo 
'Beim Loeschen der Datei '$fileArray[$j] . ' trat ein Fehler auf! <br />';
        }
        echo 
'<meta http-equiv="Refresh" content="0; url='.$_SERVER["PHP_SELF"].'">';    
    } 
Getestet habe ich das ganze jetzt mit 120 Bildern und es scheint zwar lange zu laufen, aber es geht immer noch schneller, als würde man die ganzen Bilder über Grafikprogramme erstellen und hochladen.

Danke für Hinweise und Hilfe
Flo
crueL ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Allowed Memory Size robydog PHP Tipps 2009 29 03.04.2010 18:22
Allowed Memory Size exhausted Exituz23 Server, Hosting und Workstations 4 01.02.2010 12:37
Fehler beim kompilieren von php 5.2.9 malio Server, Hosting und Workstations 11 05.06.2009 18:40
Memory Size - Trotz Umstellung Fehler! MaxDittmann PHP Tipps 2009 4 08.02.2009 00:33
Verzeichnis auslesen Manko10 Wiki Diskussionsforum 15 26.10.2008 21:43
Memory exhausted PHP Tipps 2005-2 2 29.08.2005 19:47
[Erledigt] Fatal error: Allowed memory size... PHP Tipps 2005-2 5 07.07.2005 13:01
Allowed Memory Size exhausted bicpi PHP-Fortgeschrittene 16 20.04.2005 00:28
different size in shared object, consider re-linking!? Heart Datenbanken 1 09.03.2005 15:42
Fatal error: Allowed memory size of 8192 bytes exhausted at PHP Tipps 2005 11 06.03.2005 19:26
[Erledigt] imagecreatetruecolor memory size PHP-Fortgeschrittene 2 10.09.2004 17:52
Fatal error: Allowed memory size of PHP Tipps 2004 4 04.09.2004 17:50
[Erledigt] Memory Problem mit gd PHP-Fortgeschrittene 1 25.06.2004 18:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
memory bild leeren php, memory exhausted, imagecreatefromjpeg for loop, php allowed memory size exhausted ursache finden, imagecopyresampled memory, php jpeg verkleinern ohne imagecreatefromjpeg, php memory size exhausted, php imagecreatefromjpeg allowed memory size exhausted, php gd2 memory problem, imagecreatefromjpeg abmessung, memory exhaused, php, images, memory, problem, imagecreatefromjpeg allowed memory size xampp, memory size exhausted, apache2 imagecreatefromgif geht nicht, php fehler imagecreatefrom allowed, php herausfinden memory, imagecreatefromjpeg php.ini size, xampp imagecreatefromjpeg \allowed memory size\, imagecreatefromjpeg allowed memory size

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:02 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum