FAQ |
Kalender |
![]() |
#21 | ||
|
|||
Nykomling
|
Citat:
httpd.apache.org/docs/programs/ab.html |
||
![]() |
![]() |
![]() |
#22 | |||
|
||||
Bara ett inlägg till!
|
Drar upp den här gamla tråden eftersom jag sitter i samma sits nu.
Jag vill alltså gärna låta PHP sköta berhörighetskontroll för bilder. Jag har kört benchmark och kommit fram till att det är hälften så snabbt att göra detta med PHP. Nu är frågan om det har hänt något på den här fronten och alltså om det finns några bra metoder att snabba upp PHP. Jag har testat olika inställningar för output buffer utan nämnvärt resultat. Kan det vara så att PHP 5 av någon anledning är snabbare på detta? Andra tips på trim uppskattas (allt från kompileringsflaggor till inställningar). Mjukvara: Linux Apache 2 (prefork MPM) PHP 4 Testkörd kod: Citat:
|
|||
![]() |
![]() |
![]() |
#23 | ||
|
|||
Mycket flitig postare
|
Jag använder eAccelerator som cachar phpfilerna färdigkompilerade. Detta hjälper mig en hel del. Jag vet inte hur mycket det hjälper vid bildvisning, men det är jag nyfiken på.
eAccelerator är en vidareutveckling av turckmmcache. |
||
![]() |
![]() |
![]() |
#24 | |||
|
||||
Bara ett inlägg till!
|
Med eAccelerator tjänar jag ca. 5-7% i tid. Det medgör att det bara tar 60% mer tid med PHP. Hur jag kunde få det till att det tog dubbelt så lång tid med PHP igår vet jag inte för det är samma kod jag kört testet på. Men men, 60% är inte så farligt mycket.
|
|||
![]() |
![]() |
![]() |
#25 | ||
|
|||
Mycket flitig postare
|
Hittade denna kommentar på php.net "readfile and fpassthru are about 55% slower than doing a loop with "feof/echo fread"." Vet inte om det stämmer men du skulle ju alltid kunna testa.
|
||
![]() |
![]() |
![]() |
#26 | ||
|
|||
Medlem
|
Kul att denna gamla tråden kom upp igen.
Jag håller på med ett system där jag har stått inför precis samma övervägande. För att undvika att databasen behöver tillkallas vid var bild som ska skickas till webläsaren, så funderar jag på följande. Sidan som generarar alla [img]image.php?id...[/img]-tagar kontrollerar ju även att bilden är godkänd för användarn (Annars skulle inte tagen-skrivas) Således behöver inte detta test göras fler gånger så en cache med denna information lägges i en session-variabel. Så image.php kontrollerar enbart mot databasen om bilden saknas i session-variabeln. image.php rensar även i session-variabeln när bilden visasts, för att sessions-datamängden inte ska växa ohämat. Jag har inte haft tid att testa systemets prestanda än, men jag hoppas det ska snabba upp det hela! / Lasse |
||
![]() |
![]() |
![]() |
#27 | ||
|
|||
Mycket flitig postare
|
Tvartom: Jag tror inte din egen hemmagjorda cachning ger något nämnvärt i performance vinst.
För image.php måste ju läsa filen (readfile, read eller passthru) oavsett och det är där flaskhalsen ligger tror jag. Inte i hur effektivt du kollar om bilden är ok eller inte mot databasen. |
||
![]() |
![]() |
![]() |
#28 | ||
|
|||
Flitig postare
|
Halkade in på denna gamla tråden.
Varför inte kombinera det bästa av två världar. Låt php kontrollera om användaren får ladda ned bilden och låt apache skicka den. Jag tänker mig nått i stil med detta: Kod:
image.php Kontrollera om användaren får ladda ned bilden Ja användaren har rättighet header('Location: <bildens url>'); Nej användaren har inte rättigheter att se bilden header('<sänd forbidden header>'); Dock så kan tekniska användare hotlinka till denna bilden om de tittar på headrarna som servern skickar tillbaka. Men i slutändan är väl allt en avvägning. Edit: Formattering av pseudokod |
||
![]() |
![]() |
![]() |
#29 | ||
|
|||
Mycket flitig postare
|
Men om du gör header('Location: <bildens url>'); vad hindrar då någon att gå direkt till bilden?
Däremot om man använder lighttpd kan man göra det. Då kan man göra auth-kollen i php och sen sätta headern x-sendfile vilket gör att Lighttpd kommer outputa bilden åt en. Mer info finns på http://blog.lighttpd.net/articles/2006/07/...7/02/x-sendfile. |
||
![]() |
![]() |
![]() |
#30 | ||
|
|||
Flitig postare
|
Citat:
Citat:
Så då är det bara att ta mitt exempel och byta ut Location mot x-sendfile och se till att modden är installerad på din Apache server. Nu är det verkligen det bästa av två världar ![]() |
||
![]() |
![]() |
Svara |
|
|