Portal > Foren > PHP > PHP-Programmierung > Fatal Error Memory Limit abfangen
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 07.01.2008, 09:36 Nach oben    #21
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
Ich bin der Meinung - bevor man sich mit soetwas auseinandersetzen muss (Speicherknappheit im Script) - dass ein Script, welches Bilddaten verarbeiten soll ruhig genug Speicher zur Verfügung haben soll.
Jo, der Meinung bin ich auch. Nur, was heißt „genug Speicher“?

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.01.2008, 20:43 Nach oben    #22
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 691
Standard

Das weiß ich nicht genau. Aber auf einem Shared-Hosting würde ich mit solchen Scripten ohnehin nicht arbeiten, da sie auch die CPU belasten und bei starker Frequentierung zur Sperrung des Accounts führen können (man beachte bitte die Möglichkeitsform, danke).

@Basti: Ich bin mit einem Wert von 512MB noch nie an die Grenzen gekommen und es waren schon verdammt große Bilder dabei (ca. 8-9 Megapixel)...
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.01.2008, 23:37 Nach oben    #23
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
Das weiß ich nicht genau. Aber auf einem Shared-Hosting würde ich mit solchen Scripten ohnehin nicht arbeiten, da sie auch die CPU belasten und bei starker Frequentierung zur Sperrung des Accounts führen können (man beachte bitte die Möglichkeitsform, danke).

@Basti: Ich bin mit einem Wert von 512MB noch nie an die Grenzen gekommen und es waren schon verdammt große Bilder dabei (ca. 8-9 Megapixel)...
…ich wollte mit meiner Anmerkung eigentlich nur ausdrücken, dass es paradox ist zu sagen: man solle sich nicht um den Speicherbedarf kümmern, sondern müsse dem Skript einfach nur ausreichend Speicher verpassen.

Aber … letztlich mache ich in dem Skript hier auch nichts anderes: anstatt wirklich den tatsächlichen Bedarf zu ermitteln schreibe ich ein Skript, mit dem man einen Wert suchen kann, für den man nach 10, 50 oder 100 Versuchen noch nicht an die Grenze gekommen ist. Letztlich muss man auch da entweder wirklich tiefer reinschauen, systematisch durchtesten oder den Puffer so hoch setzen, dass die „gefühlte“ Wahrscheinlichkeit gering ist, da nicht doch an die Grenzen zu kommen. Ist mir so aber immer noch lieber, zumal ich keinen eigenen Server betreibe und das auch auf die wenigsten meiner Kunden zutrifft – und die wollen sicherlich nicht ein viertel GB je Skriptaufruf an Speicher reservieren.

Nette kleine Skripte, die mal eben alle Bilder in einem Ordner um 3° drehen sind ja das eine. Aber in aller Regel geht es doch darum, dem Kunden eine Funktion zu schreiben, die er auf seiner Website anbieten möchte.

Was das Limit angeht, so kann man das selbst im Skript noch festlegen:

ini_set('memory_limit', '256M');


Natürlich ist das auf shared hosts begrenzt. Wie das allerdings umgesetzt ist, weiß ich nicht. Würde mich aber auch interessieren.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.01.2008, 08:03 Nach oben    #24
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.381
Standard

Zitat:
Zitat von Basti Beitrag anzeigen
Wie das allerdings umgesetzt ist, weiß ich nicht. Würde mich aber auch interessieren.
Gerade mal nachgelesen...

Also mein Buch sagt dazu folgendes:
Zitat:
Speicherbegrenzungen, die via VirtualHost festgelegt werden, können sowohl per ini_set() als auch über .htaccess-Dateien aufgehoben werden.
Wenn der Admin das Speicherlimit "fest" und nicht vom Kunden oder Skript änderbar implementiert wissen möchte, dann muss suhosin eingespielt sein, welches die Änderungen unterbindet.
Inhaltlich zitiert; sprachlich angepasst. Quelle: Php-Sicherheit von Kunz, Esser und Prochaska

Ob das in der Praxis vorkommt - das weiß ich nicht...
__________________

Umfragen:
bitte beachten: Vorschläge für künftige Umfragen
Woher weißt du vom developers-guide?

Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Schreibe ein Tutorial und beschreibe, wie es geht, was nicht klappt, wo man aufpassen muss usw.
Danke!
Jann Hendrik ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.01.2008, 11:22 Nach oben    #25
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 691
Standard

@Basti: Im Grunde gebe ich dir auch recht, dass man als Programmierer nicht den Weg gehen sollte, zu sagen "Ach, wenn der Speicher nicht reicht, dann muss es halt mehr sein". Jedoch ist es ja nicht so, dass man bei der Verarbeitung von Bildern in PHP eine große Wahl hat und von GD abhängig ist. Wenn dann halt 16 MB nicht mehr reichen, muss es zwangsläufig mehr sein. Solche Scripte benötigen halt viel Speicher und ich halte es für falsch das Rad neu erfinden zu wollen, wenn der Weg über mehr Speicher deutlich einfacher ist...
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.01.2008, 13:35 Nach oben    #26
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
@Basti: Im Grunde gebe ich dir auch recht, dass man als Programmierer nicht den Weg gehen sollte, zu sagen "Ach, wenn der Speicher nicht reicht, dann muss es halt mehr sein". Jedoch ist es ja nicht so, dass man bei der Verarbeitung von Bildern in PHP eine große Wahl hat und von GD abhängig ist. Wenn dann halt 16 MB nicht mehr reichen, muss es zwangsläufig mehr sein. Solche Scripte benötigen halt viel Speicher und ich halte es für falsch das Rad neu erfinden zu wollen, wenn der Weg über mehr Speicher deutlich einfacher ist...
Ich hab nie gesagt, man solle nach speicherschonenderen Lösungen suchen. Nur, dass man einen möglichen Abbruch weitgehend vorherberechnen und ihn so verhindern kann.

Wenn du einen Aufzug baust, dann kannst du ausrechnen, wie dick die Seile sein müssen oder du kannst es sein lassen.

Klar, wenn du mit etwas Erfahrung siehst: Das Ding zieht sogar einen 40-Tonner, dann ist es halbwegs ungefährlich, da einen kleinen Aufzug ranzuhängen, in den eh nur ein paar Leute reinpassen. Aber das ist ja hier nicht gegeben:

Nimm ein einfarbiges PNG mit 10.000 * 1 Pixel. Die Datei ist gerade mal 4 kB groß und wirkt damit extrem harmlos. Dreh es mit PHP/GD um 45° und du wirst nach meinem Modell bis zu 467 MB benötigen! (Bei nur einem Grad sollten 16 MB z.B. reichen). Die maximale Dateigröße oder der Flächeninhalt taugen hier also nicht als Grenzwerte, höchstens die maximale Kantenlänge. Aber auch hier wäre es dann sinnig, zumindest auszuprobieren, welches Quadrat bei einer 45°-Drehung an die Speichergrenze kommt.

Dazu kommt, dass mehr Speicher sehr teuer sein kann (VirtualHost mit 8 MB für 3 Euro im Monat gegen den Betrieb eines eigenen Servers), es also schon sinn macht, hier nicht verschwenderisch zu sein, sondern kontrolliert bis an die Grenze zu gehen. Weiter liegt die Berechnung ja bereits halbwegs brauchbar vor, stellt also kaum Mehraufwand dar.

Ich denke, die Entscheidung fällt nicht schwer, hier ein Schild anzubringen: „Maximal 5 Personen, 300kg“.

Basti

Geändert von Basti (10.01.2008 um 13:37 Uhr)
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.01.2008, 19:28 Nach oben    #27
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 597
Standard

Ist es denn wirklich Sinnvoll ein Bild was über 1000x1000px hat, mit einer krummen Gradzahl zu drehen ?
Vielleicht sind Server in 5 Jahren soweit, dass man dies problemlos machen kann, aber derzeit kommt man bei der GDlib schnell an die Grenze.
Und eines muss man sich ja im klaren sein, auf einen Server sind ja auch noch andere Nutzer, und nicht jeder hat ein eigenen Server

Mahlzeit ...
CIX88 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.01.2008, 21:20 Nach oben    #28
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 853
Standard

Ou, sehe gerade, dass mein Modell für 90°-Drehungen (etc.) nicht aufgeht. wie eigentlich nicht anders zu erwarten bruachts da nicht viel mehr, als die doppelte Speichermenge, die ein Bild „entpackt“ benötigt.

Basti
Basti ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


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

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:49 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45