Avatar billede lraj Nybegynder
04. oktober 2008 - 23:06 Der er 7 kommentarer og
1 løsning

Hvis fejl udskriv andet

Jeg har brug for lidt desperat hjælp.
Jeg har et script, som forminsker billeder, hvis de er over 500x500 pixels. Det virker fint, men serveren tillader ikke nok memory size, til at den gør det ved billeder over 1500x1500 fx. .. Det er så okay med mig, jeg vil bare mindske ned ved de billeder, hvor jeg kan. Det er desuden kun mig, som får fejlen at se. Så hvad gør det.

Nå men nok om det. Det er fordi jeg sidder og godkender hvert enkelt billede i tilfælde af, der skulle være pornografisk materiale iblandt. Så får jeg nedsat lidt KB ved at formindske billederne. Når jeg så vil godkende et billede over de 1500x1500 fordi det fylder alt for meget kommer den med en sådan fejl;

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1920 bytes) in /usr/home/web/web224725/mitsite.dk/indhold/Billede Godkend.php on line 38

I stedet for at lade den udskrive det og lukke for at yderligere scripts, i samme fil udfører sit arbejde. Som havde jeg brugt exit(); - Er der så en løsning, som i stedet for at udskrive fatal error'en, at den så udskriver "Billedet var for stort, til at forminskes" og ikke lukker resten af siden med et exit(); automatisk.

Håber i forstod, det lyder meget indviklet når jeg sådan lige læser det igennem selv.
Avatar billede marzman Nybegynder
05. oktober 2008 - 01:02 #1
hmm jeg ved ikke hvordan du udskriver det som en fejl men fandt hurtigt frem til hvordan du sætter din Cache større...
En normal php standard ini-fil er cachen sat til 8mb (se dette link http://www.tech-recipes.com/rx/777/solve-php-fatal-error-allowed-memory-size-of-8388608-bytes-exhausted-tried/)
Avatar billede marzman Nybegynder
05. oktober 2008 - 01:08 #2
alt efter hvordan din kode ser ud må du på en måde kunne stoppe scriptet inden at den udskriver billedet (og dermed i stedet udskriver en fejl).

Du skal på en måde (alt efter hvordan dit script er opbygget) have noget i retning af:

if($gen_picture_size >= 8) {
  echo "Fejl: Billedet er for stort";
  die();
}

Hvis det er GD du bruger er det selvfølgelig med funktionen der opretter billedet du skal finde denne størrelse.

Beklager det er den bedste hjælp jeg kan give dig når jeg ikke har koden...
Avatar billede lraj Nybegynder
05. oktober 2008 - 01:57 #3
Beklager

ini_set("memory_limit","50M");
Virkede ikke.. Må der være spærret for, på min server.
Hvis jeg skal sætte en grænse med if, i KB, bliver det os lidt svært. For jeg har virkelig ingen anelse om hvor grænsen går, hos serveren.
Avatar billede wanze Nybegynder
05. oktober 2008 - 10:09 #4
Hvis du prøver at smide et @ foran den linje, der skaber fejlen, så skulle den gerne undertrykke fejlen. Du kan så prøve noget i stil med:

if (!@funktion()) {
  print "Billedet er for stort.";
}
Avatar billede marzman Nybegynder
05. oktober 2008 - 11:26 #5
Du skriver at du ikke kan finde ud af hvor stor din hosts cache er ... det er super let at finde ud af. det står jo i phpinfo().

kør
<?php
phpinfo();
?>

så find linien med memory_limit og se hvad der står :)

Som wanze siger så er @ en god måde at finde ud af hvor din fejl ligger... :)
Avatar billede lraj Nybegynder
05. oktober 2008 - 22:11 #6
16M hvilket ville svare til 16 MB? eller.
Avatar billede wanze Nybegynder
05. oktober 2008 - 22:44 #7
Ja, 16M er 16 megabyte.
Avatar billede lraj Nybegynder
04. august 2010 - 13:54 #8
Da hostet ikke tillod at få rettet dette, var den eneste løsning i sin tid, - for jeg, at skifte host. Jeg takker dog for svarerne, men ingen af løsningerne var den jeg ledte efter.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester