Portal > Foren > PHP > PHP-Programmierung > Fatal Error Memory Limit abfangen
Antwort
 
Themen-Optionen
Alt 04.01.2008, 14:58 Nach oben    #1
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard Fatal Error Memory Limit abfangen

Ich mache ein paar Aktionen mit Fotos (drehen, Helligkeit, etc.) wenn ich nun ein Foto (was ein Dau hochlädt) mit an die 2000px drehe bekomme ich wie zu erwarten einen memory allocation error, eben das zu wenig Speicher vorhanden ist. Ich würde diese Fatal Error der beispielsweise bei imagerotate() auftreten kann abfangen. Leider hab ich schon einiges Versucht. Das Script bricht einfach ab. Auch mit @imagerotate bekomme ich nichts zurückgeliefert. Am liebsten wär mir ein false (wenn der speicher nicht reicht) um damit eine exception zu werfen.

Hat jemand eine Idee wie ich aus diesem FatalError eine Exception bekomme oder irgendwas anderes brauchbares statt einer leeren Seite?
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.01.2008, 15:13 Nach oben    #2
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 298
Standard

Vorher prüfen wie gross das Bild ist?
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.01.2008, 15:17 Nach oben    #3
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard

Wieviel Speicher verbraucht wird sollte sich in etwa doch errechnen lassen, oder?

Dazu auch:
http://www.developers-guide.net/foru...-grosse-bilder

wie groß ein Bild ist kann man ja mittels getimagesize ermitteln. Somit auch den Speicherberbrauch, oder?
__________________

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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.01.2008, 15:23 Nach oben    #4
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Den benötigten Speicher zu berechnen, dachte ich auch schon allerdings war mir nich ganz klar wie das geht.

Wie berechne ich vorher den Speicherverbrauch? Eignet sich hierfür das Grundlagen Tutorial? Ich müsste das doch noch mit dem normalen Speicherverbrauch verrechnen oder?

Übrigens ist mir zum Beispiel aufgefallen das nicht unbedingt die Dateigröße entscheidend ist sondern auch die Bildmaße. So hat ein Bild mit 800kb und ca 2500*2000 Pixel einen Fatal Error erzeugt aber ein kleineres Bild mit größerer Dateigröße nicht.
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.01.2008, 15:29 Nach oben    #5
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard

Zitat:
Zitat von ex³ Beitrag anzeigen
Übrigens ist mir zum Beispiel aufgefallen das nicht unbedingt die Dateigröße entscheidend ist sondern auch die Bildmaße. So hat ein Bild mit 800kb und ca 2500*2000 Pixel einen Fatal Error erzeugt aber ein kleineres Bild mit größerer Dateigröße nicht.
Die Antwort auf diese Frage steht in dem link!


Zitat:
Zitat von ex³ Beitrag anzeigen
Eignet sich hierfür das Grundlagen Tutorial?
ja!
__________________

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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.01.2008, 16:43 Nach oben    #6
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Wobei ich diesen Beitrag noch etwas ändern muss.

Nur für das laden vom 2500*2000 Pixel Bild gehen schon über 23MB drauf.
Dann kommen noch Kopien vom Bild hinzu, und du hast das Ende erreicht.
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.01.2008, 16:47 Nach oben    #7
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Ich hab im Web mal die gleiche Fehlermeldung aufgeschnappt

Code:
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 12 bytes)
Kann ich dadurch feststellen wieviel Speicher die Bildverarbeitung letztendlich verbraucht um zu vergleichen ob meine vorherige Berechnung auf das gleiche Ergebnis kommt?

Zu dem Fatal Error: Wieviel Speicher braucht den dieser Befehl der den Fatal Error erzeugt hat? 16777216 Bytes + 12 Bytes? Oder was bedeutet denn "tried to allocate..."?
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.01.2008, 16:56 Nach oben    #8
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Die Seite ist noch nicht schön, aber:
http://www.mediacix.de/code/GDlib-un...f-85-code.html

Mit memory_get_usage() kannst du das sogar live auslesen.
Natürlich kann man auch im Vorfeld das ganze grob berechnen.

MB =

2500 * 2000 * 40
-----------------
8 * 1024 * 1024

Laut Fehlermeldung stehen nur 16MB (memory_limit) bereit, dein Bild braucht aber über 23MB und weil dies etwas mehr ist, kommt es zur Fehlermeldung.
Also der Versuch mehr als 16MB zu benutzen
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.01.2008, 21:19 Nach oben    #9
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Wie ich geschrieben habe ist die Meldung aus dem Web und nicht von mir. Auf meinem localhost ist die Meldung genauso formuliert nur die Werte sind anders.

Ok. Ich denke mit den Infos aus dem Thread werd ich mal ne Funktion bauen die den Speicher berechnet, wenn ich was aufgesetzt habe werde ich es hier mal posten.

EDIT: Hier ist nun meine Fehlermeldung. Bilddatei ist 2600*1200px groß und hat eine Dateigröße von 260,5 kb. Ich mache imagerotate um 2 Grad und dann kommt das:

Zitat:
Allowed memory size of 33554432 bytes exhausted (tried to allocate 6480 bytes) ...
Jetzt wo ich am Probieren gerade bin. Ich glaube das geht alles garnicht wie ich will. Ich kann vielleicht rauskriegen wieviel Speicher das Bilder braucht. Aber wieviel für imagerotate benötigt wird, kriege ich nicht raus.

Geändert von ex³ (04.01.2008 um 21:55 Uhr).
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.01.2008, 22:57 Nach oben    #10
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Zitat:
Zitat von ex³ Beitrag anzeigen
Jetzt wo ich am Probieren gerade bin. Ich glaube das geht alles garnicht wie ich will. Ich kann vielleicht rauskriegen wieviel Speicher das Bilder braucht. Aber wieviel für imagerotate benötigt wird, kriege ich nicht raus.
Schau dir mal die Funktion memory_get_peak_usage() an.

Ansonsten wurde ich einfach mal von der kleinstmöglichen Größe ausgehen und von dort an die Speicher-Grenze erhöhen, bis es passt. Mindestens brauchst du ja den momentan schon benutzten Speicher (memory_get_usage()), dazu den Bedarf für das „ausgepackte“ Original (also w * h + Farbtiefe) und den Bedarf für das Ergebnis. Hier musst du die Dimensionen eben anhand des Winkels der Drehung ausrechnen. Da noch ein bisschen Puffer für die Berechnung sollte wahrscheinlich reichen.

Basti

Geändert von Basti (07.01.2008 um 02:29 Uhr).
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.01.2008, 23:53 Nach oben    #11
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 298
Standard

Einfach mal die Seite von Jann Hendrik beachten! Da wird das ganz geuna beschrieben. Es steht sogar, wie du die Grösse berechnen kannst...
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.01.2008, 00:16 Nach oben    #12
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard

Zitat:
Zitat von Bleistift Beitrag anzeigen
Einfach mal die Seite von Jann Hendrik beachten! Da wird das ganz geuna beschrieben. Es steht sogar, wie du die Grösse berechnen kannst...
ja, das schon, aber der Speicher für die Bearbeitung muss noch berücksichtigt werden!
Denn die Verarbeitungsschritte verbrauchen ja auch noch was!
__________________

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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.01.2008, 00:22 Nach oben    #13
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 298
Standard

Zitat:
Zitat von Jann Hendrik Beitrag anzeigen
Denn die Verarbeitungsschritte verbrauchen ja auch noch was!
Das findet man vermutlich am besten mit Versuchen heraus: Ich behaupte einfach mal, dass das prozentmässig immer ungefähr gleich viel ist
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.01.2008, 01:59 Nach oben    #14
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Zitat:
Aber wieviel für imagerotate benötigt wird, kriege ich nicht raus.
Kann man auch nicht wirklich berechnen, nur ungefähr abschätzen.

ImageRotate erzeugt innerhalb der GDlib ein neues TrueColor-Bild (gdImageTrueColor). Dabei wird von jedem Pixel R, G, B (als TrueColor) und Alpha vom Originalbild erfasst, die neue Postion berechnet und in das neue erzeugte Bild geschrieben. Man kann also davaon ausgehen, dass sich der Speicherbedarf mind. verdoppelt, weil sich in diesem Moment praktisch 2 Bilder im Speicher befinden. Jedenfalls solange bis der Bearbeitungsprozess beendet ist.

Hier hab ich mal versucht eine eigene Rotate-Funktion zu schreiben:
http://www.mediacix.de/code/demo.php5?id=165
Im Prinzip kommt das selbe raus, und der Speicherbedarf wird sogar noch größer, weil durch die Drehung das Bild in der Breite und Höhe auch größer wird. Jedenfalls größer als wenn das Bild nur um 90° gedreht wäre.

Geändert von CIX88 (05.01.2008 um 02:08 Uhr).
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 05.01.2008, 16:27 Nach oben    #15
Erfahrener Benutzer
 
Registriert seit: 30.10.2005
Beiträge: 279
Standard

Zitat:
Im Prinzip kommt das selbe raus, und der Speicherbedarf wird sogar noch größer, weil durch die Drehung das Bild in der Breite und Höhe auch größer wird. Jedenfalls größer als wenn das Bild nur um 90° gedreht wäre.
Ja das stimmt. Der Fatal Error Fehler kommt nur bei einer Drehung zwischen 1-10 Grad, bei 90 oder 180 Grad funktioniert alles.

Hat sich also erledigt. Für mich lohnt sich der Aufwand nicht so eine Vorausberechnung zu machen.
ex³ ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.01.2008, 02:09 Nach oben    #16
Neuer Benutzer
 
Registriert seit: 14.10.2006
Beiträge: 3
Standard

[quote=ex³;58996]
Zitat:
Der Fatal Error Fehler kommt nur bei einer Drehung zwischen 1-10 Grad, bei 90 oder 180 Grad funktioniert alles.

Hat sich also erledigt. Für mich lohnt sich der Aufwand nicht so eine Vorausberechnung zu machen.
Bei einer Drehung von 90 Grad (oder 90 multiples), php (gd) braucht braucht zwei mal mehr Memory als das original Bild (1000x900 pixels == 900x1000 pixels). Sobald du nur ein Grad mehr brauchst, dann das Bild wird breiter und höher, logisch
__________________
--
Pierre
http://blog.thepimp.net | http://www.libgd.org
Pierre ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.01.2008, 02:38 Nach oben    #17
Erfahrener Benutzer
 
Registriert seit: 18.03.2005
Beiträge: 591
Standard

Zitat:
Sobald du nur ein Grad mehr brauchst, dann das Bild wird breiter und höher, logisch
Jo was bereits erwähnt wurde
CIX88 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.01.2008, 20:03 Nach oben    #18
Bastian Fenske
 
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 826
Standard

Unten ein Code zum Rumspielen und eine Beispielausgabe. Er enthält u.A. eine Berechnung der neuen Bild-Maße (oh man, Geometrie-Unterricht ist lange her, aber scheint zu stimmen ).

Was mich wundert, ist, dass die Bilder einiges mehr als das 4-fache (TrueColor + Alphakanal = 32 bit = 4 Byte) ihrer Breite * Höhe an Bytes benötigen. Ich hab den Faktor 5,6 gewählt. Er lag tatsächlich manchmal über 5,5.

Die so errechneten Werte der beiden Bilder hab ich dann zusammen mit 1,7 multipliziert und damit bei meinen Tests immer im grünen Bereich geblieben.

Aber vielleicht hab ihr bessere Werte, eine passendere Berechnung oder findet einen Fehler.

Basti

Drehungen um 90, 180 etc. Grad sind hier (noch) nicht berücksichtigt. Sie benötigen wesentlich weniger Speicher.


PHP-Code:
<pre><?php


// config

ini_set('memory_limit''14m');

$iWidth  900;
$iHeight 500;
$fAngle  45.0;
$fConfigImageFactor    5.6;
$fConfigRotationFactor 1.7;


// calculate target dimensions

list ($iExpectedWidth$iExpectedHeight) = calculateRotatedImageDimensions($iWidth$iHeight$fAngle);


// calculate expected memory usage

$iExpectedMemOriginal $iWidth $iHeight $fConfigImageFactor;
$iExpectedMemRotated  $iExpectedWidth $iExpectedHeight $fConfigImageFactor;

$iExpectedMemBoth $iExpectedMemOriginal $iExpectedMemRotated;
$iExpectedMem     $iExpectedMemBoth $fConfigRotationFactor;


// print configuration

printLine('dims original'"$iWidth * $iHeight");
printLine('angle'$fAngle);
printLine('image mem factor'$fConfigImageFactor);
printLine('rotation factor'$fConfigRotationFactor);
printLine();


// memory limit

$iMemLimit getMemLimit();
printLine('memory limit'$iMemLimit'formatNumber');


// expected result

// add actual (real) memory usage
$iExpectedMemTotal getMemUsage($iExpectedMemtrue);
printLine('expected total mem'$iExpectedMemTotal'formatNumber');

if (
is_null($iMemLimit) || $iExpectedMemTotal <= $iMemLimit) {

    
$sExpectedResult 'okay';

} else {

    
$sExpectedResult 'Out of memory (almost)';
}
printLine('expected result'$sExpectedResult);
printLine();


// create and rotate image and print results

$iMemStart    getMemUsage();
$rImgOriginal imagecreatetruecolor($iWidth$iHeight);
$iMemOriginal getMemUsage(-$iMemStart);

printLine('mem used by original'$iMemOriginal'formatNumber');
printLine('expected'$iExpectedMemOriginal'formatNumber');
printLine();

$iMemTmp     getMemUsage();
$rImgRotated imagerotate($rImgOriginal$fAngle0);
$iMemRotated getMemUsage(-$iMemTmp);

printLine('mem used by rotated'$iMemRotated'formatNumber');
printLine('expected'$iExpectedMemRotated'formatNumber');
printLine();

printLine('mem usage total'memory_get_peak_usage(true) - $iMemStart'formatNumber');
printLine('expected'$iExpectedMemTotal'formatNumber');
printLine();


// print expected and real dimensions of rotated image
// (orientation ignored)

printLine('dims expected'"$iExpectedWidth * $iExpectedHeight");
printLine('real dims'imagesy($rImgRotated) . ' * ' imagesx($rImgRotated));


// -----------
//  functions
// -----------


// orientation ignored

function calculateRotatedImageDimensions($iWidth$iHeight$fAngle)
{
    
$fAngleRad deg2rad($fAngle 90);
    
$fSin sin($fAngleRad);
    
$fCos cos($fAngleRad);

    
$iNewWidth  ceil(($iWidth  $fSin) + ($iHeight $fCos));
    
$iNewHeight ceil(($iHeight $fSin) + ($iWidth  $fCos));

    return array(
$iNewWidth$iNewHeight);
}

function 
printLine($sLabel ''$mValue null$mCallback null)
{
    if (!
is_null($mCallback))
        
$mValue call_user_func($mCallback$mValue);

    
printf("%-20s %15s\n"$sLabel, (string) $mValue);
}

function 
getMemUsage($iOffset 0$bReal false)
{
    return 
memory_get_usage($bReal) + $iOffset;
}

function 
getMemLimit()
{
    
$mMemLimit ini_get('memory_limit');

    if (
$mMemLimit != -1)
        return 
getBytes($mMemLimit);
}

function 
getBytes($mValue) {

    
$mValue trim($mValue);
    
    if (
is_numeric($mValue)) {

        
$iValue $mValue;
    
    } else {

        
$sUnit  strtolower(substr($mValue, -1));
        
$iValue = (int) substr($mValue0, -1);
        
        switch (
$sUnit) {
            case 
'k':
                
$iValue *= 1024;
            case 
'm':
                
$iValue *= 1024;
            case 
'g':
                
$iValue *= 1024;
        }
    }
    return 
$iValue;
}

function 
formatNumber($m)
{
    if (
is_null($m))
        return 
'---';

    
$i round($m 100) === round($m) * 100 2;
    
    return 
number_format($m$i'.'',');
}
Beispielausgabe:
Code:
dims original              900 * 500
angle                             45
image mem factor                 5.6
rotation factor                  1.7
                                    
memory limit              14,680,064
expected total mem        13,876,696
expected result                 okay
                                    
mem used by original       2,269,400
expected                   2,520,000
                                    
mem used by rotated        4,933,576
expected                   5,488,560
                                    
mem usage total           12,759,136
expected                  13,876,696
                                    
dims expected              990 * 990
real dims                  990 * 990

Geändert von Basti (10.01.2008 um 21:22 Uhr).
Basti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.01.2008, 07:53 Nach oben    #19
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

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. Ich habe meinen Cron-Jobs meist 256 oder 512 MB zugestanden, damit eben das nicht passiert, was hier beschrieben wird!?
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.01.2008, 07:59 Nach oben    #20
Jann Hendrik Bekaan
 
Benutzerbild von Jann Hendrik
 
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.213
Standard

Zitat:
Zitat von MrNiceGuy Beitrag anzeigen
Ich bin der Meinung [...] ruhig genug Speicher zur Verfügung haben soll.
Was aber heißt, dass man Zugriff auf die php.ini haben muss, was nicht jeder haben dürfte!
Oder lässt sich das als .httaccess-Direktive ändern?
__________________

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  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen 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

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 aus