/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
[Svært spørgsmål] GD-LIB
Fra : Janus Hoi


Dato : 07-02-04 12:53

Jeg bruger et script som en 'XyBorx' har lavet til at styre noget GD-LIB i
mit fotoalbum.
http://www.xyborx.dk/phpbb/viewtopic.php?t=4

Jeg uploader til serveren fra et php-script og så bliver billedet kopieret
og resized til en mappe hvor det højst må fylde 497 pixels i bredden og 600
pixels i højden.

Derudover bliver der lavet en Thumb i en anden mappe. Har har jeg sat
størrelsen til max. 90 pixels høj.

Jeg har fået det til at virke rimeligt godt. Mine billeder bliver uploadet
og sat ind på siden og alting er fint.

Altså hvis billedet ikke er ret stort.

Men når jeg uploader billeder der er større end omkring 500kb kommer
følgende fejlmeddelelse:
-----------

Warning: show_source(): SAFE MODE Restriction in effect. The script whose
uid is 35887 is not allowed to access ./ owned by uid 0 in
/stien/til/scriptet/imageresize.php on line 108

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to
allocate 6400 bytes) in /stien/til/scriptet/imageresize.php on line 22

-----------

Det lader ikke til at være et problem med at uploade store filer til
serveren, for billedet /bliver/ lagt ind, det bliver bare ikke behandlet af
GD-LIB.

Der kan altså godt uploades et billede på for eksempel 1,2 mb. Det kommer
bare til at ligge på serveren uden at blive resized så.

Jeg har lige taget og lagt et eksempel på serveren som viser den aktuelle
fejlmeddelelse. Det er kun den html-kode der bliver genereret, jeg her lagt
op. Jeg har ikke umiddelbart lyst til at vise nogle mit upload-bibliotek.
http://hjerteknuser.dk/fejlmeddelelse.htm

Scriptet jeg bruger har jeg lagt her:

http://hjerteknuser.dk/imageresize.zip

--
Janus



 
 
Janus Hoi (07-02-2004)
Kommentar
Fra : Janus Hoi


Dato : 07-02-04 12:58

"Janus Hoi" <hoi@**jagi.com> skrev i en meddelelse
news:4024d1b7$0$29304$edfadb0f@dread15.news.tele.dk...
> Jeg bruger et script som en 'XyBorx' har lavet til at styre noget GD-LIB i
> mit fotoalbum.


Jeg glemte lige at fortælle, at jeg har host hos Azero.dk
--
Janus



Thomas Rokamp (07-02-2004)
Kommentar
Fra : Thomas Rokamp


Dato : 07-02-04 14:04

<SNIP>
> Men når jeg uploader billeder der er større end omkring 500kb kommer
> følgende fejlmeddelelse:
> -----------
>
> Warning: show_source(): SAFE MODE Restriction in effect. The script whose
> uid is 35887 is not allowed to access ./ owned by uid 0 in
> /stien/til/scriptet/imageresize.php on line 108
>
> Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to
> allocate 6400 bytes) in /stien/til/scriptet/imageresize.php on line 22
>
> -----------
</SNIP>

I følge fejlmeddelelsen lader det til, at det script du bruger sluger store
mængder hukommelse. Og mængden vokser med størrelsen af billedet. Normal
opsætning af PHP giver 8mb hukommelse som max, hvilket for de flestes
vedkommende er rigeligt.
Løsning 1: Tal med din udbyder om de vil sætte grænsen op. Det er det
nemmeste, men nok ikke det mest elegant.
Løsning 2: Ret i scriptet og se om du kan hukommelses optimere det. Fx. brug
af reference i stedet for copy. Hvis der bliver oprettet et nyt image, for
hver underfunktion i scriptet, bliver det hurtigt dyrt i hukommelse.
Løsning 3: Findes der et alternativ til scriptet, som kører mere optimalt?

Mvh.
Thomas Rokamp



Janus Hoi (08-02-2004)
Kommentar
Fra : Janus Hoi


Dato : 08-02-04 12:41


"Thomas Rokamp" <no_spam@crax.dk> skrev i en meddelelse
news:4024e233$0$165$edfadb0f@dtext02.news.tele.dk...

> Løsning 1: Tal med din udbyder om de vil sætte grænsen op. Det er det
> nemmeste, men nok ikke det mest elegant.

Jeg fik et råd fra udbyderen om at lave en .htaccess.

Inden i denne fil skulle jeg skrive følgene.

"php_value memory_limit 20M"

Og nu virker det.

> Hvis der bliver oprettet et nyt image, for hver
> underfunktion i scriptet, bliver det hurtigt dyrt i hukommelse.

Det jeg gør er, at jeg kopierer billedet ind i en mappe fra upload
formularen ved hjælp af method="post". Så tager jeg den fil og kopier den,
ændrer den til en thumbnail og ligger den i en 'tn'-mappe.

Den fil der først blev lagt ind på serveren ændrer jeg nu størrelsen på, så
den max er 497 pixels i bredden.

Er det ikke elegant nok, eller er jeg helt ude i hampen?
--
Janus



Thomas Rokamp (09-02-2004)
Kommentar
Fra : Thomas Rokamp


Dato : 09-02-04 20:42

> Det jeg gør er, at jeg kopierer billedet ind i en mappe fra upload
> formularen ved hjælp af method="post". Så tager jeg den fil og kopier den,
> ændrer den til en thumbnail og ligger den i en 'tn'-mappe.
>
> Den fil der først blev lagt ind på serveren ændrer jeg nu størrelsen på,

> den max er 497 pixels i bredden.
>
> Er det ikke elegant nok, eller er jeg helt ude i hampen?

Det er sikker ganske fint - eneste spørgsmål er blot om du bruger "pass by
reference" eller "pass by value" når du behandler billeder...

/Thomas



Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408531
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste