/ 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
mod rewrite på større sites
Fra : Jonas Koch Bentzen


Dato : 15-05-02 10:16

Hej

Er der nogle, der har erfaringer med, hvor mange resurser mod_rewrite
sluger? Jeg står i den situation, at jeg skal lave et site, der får
pænt meget trafik (10-15 GB om måneden - nogle af dem er dog billeder,
men jeg kender ikke det præcise antal sidevisninger), og kunden vil
have et databasedrevent site, men insisterer samtidig på, at filerne
skal ligge som almindelige filer (query string er bandlyst). Min
oprindelige tanke var at lade PHP skrive nogle HTML- eller PHP-filer
direkte på disken, men det er ikke en optimal løsning, så jeg kunne
også gøre det vha. mod_rewrite. Spørgsmålet er, om det rent
resursemæssigt er et problem at bruge mod_rewrite på hele sitet, når
der er så forholdsvist mange sidevisninger?

--
Jonas Koch Bentzen

http://understroem.dk/

 
 
Thomas Jensen - pil.~ (15-05-2002)
Kommentar
Fra : Thomas Jensen - pil.~


Dato : 15-05-02 10:34

On Wed, 15 May 2002 11:15:54 +0200, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>Hej
>
>Er der nogle, der har erfaringer med, hvor mange resurser mod_rewrite
>sluger?

der er et minimalt overhead... skulle efter min bedste overbevisning
ikke betyde noget i praksis

>Jeg står i den situation, at jeg skal lave et site, der får
>pænt meget trafik (10-15 GB om måneden - nogle af dem er dog billeder,
>men jeg kender ikke det præcise antal sidevisninger), og kunden vil
>have et databasedrevent site, men insisterer samtidig på, at filerne
>skal ligge som almindelige filer (query string er bandlyst).

eh... skal det både være dynamisk (db) og m. statiske filer?... Hvor
statiske er filerne - as in skal de genereres een gang i døgnet eller?

> Min
>oprindelige tanke var at lade PHP skrive nogle HTML- eller PHP-filer
>direkte på disken, men det er ikke en optimal løsning, så jeg kunne
>også gøre det vha. mod_rewrite. Spørgsmålet er, om det rent
>resursemæssigt er et problem at bruge mod_rewrite på hele sitet, når
>der er så forholdsvist mange sidevisninger?

--
vh
Thomas Jensen, pil.dk
Bliv partner: http://pil.dk/partner/

Jonas Koch Bentzen (15-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 15-05-02 11:16

Thomas Jensen - pil.dk skrev:
>
> eh... skal det både være dynamisk (db) og m. statiske filer?... Hvor
> statiske er filerne - as in skal de genereres een gang i døgnet eller?

Tanken var, at en statisk HTML-/PHP-fil bliver genereret i samme
øjeblik, brugeren inde på administrationssiden har trykket på
submitknappen efter en ændring af siden. Det er bestemt ikke optimalt
at blande statiske filer med databaseting på den måde, så jeg ville
langt foretrække mod_rewrite, og det gør jeg så nok også. Tak for
svaret.

--
Jonas Koch Bentzen

http://understroem.dk/

Hroi Sigurdsson (16-05-2002)
Kommentar
Fra : Hroi Sigurdsson


Dato : 16-05-02 00:57

Jonas Koch Bentzen wrote:

> Tanken var, at en statisk HTML-/PHP-fil bliver genereret i samme
> øjeblik, brugeren inde på administrationssiden har trykket på
> submitknappen efter en ændring af siden. Det er bestemt ikke optimalt
> at blande statiske filer med databaseting på den måde, så jeg ville
> langt foretrække mod_rewrite, og det gør jeg så nok også. Tak for
> svaret.

Ved den løsning vil nogle rewrites være en dråbe i resursehavet i
forhold til at skulle lave et kald til database. Hvor mange hits i
sekundet er der tale om? Du nævnte kun trafikmængden, hvilket siger ret
lidt om hvor mange hits der er tale om.

--
Hroi Sigurdsson hroi@asdf.dk
Danske nyhedsfeeds i RSS-format: http://asdf.dk/rss/da/

Jonas Koch Bentzen (16-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 16-05-02 08:39

Hroi Sigurdsson skrev:
>
> Ved den løsning vil nogle rewrites være en dråbe i resursehavet i
> forhold til at skulle lave et kald til database. Hvor mange hits i
> sekundet er der tale om? Du nævnte kun trafikmængden, hvilket siger
> ret lidt om hvor mange hits der er tale om.

Som jeg også sagde, så kender jeg ikke antallet af sidevisninger. Jeg
gætter mig bare til, at det er forholdsvist stort.

--
Jonas Koch Bentzen

http://understroem.dk/

Henrik Stidsen (15-05-2002)
Kommentar
Fra : Henrik Stidsen


Dato : 15-05-02 15:54

Jonas Koch Bentzen <ingen.emailadresse@eksempel.dk> wrote in
news:abt90b$pp0$1@sunsite.dk

> men insisterer samtidig på, at filerne
> skal ligge som almindelige filer (query string er bandlyst).

Kan du ikke bare bruge tricket med at lave en php fil uden efternavn
og så bruge $PATH_INFO til at finde ud af hvilken side den skal vise
?

--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
"These opinions are my own, though for a small fee they
be yours too." -- Dave Haynie

Jonas Koch Bentzen (15-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 15-05-02 16:06

Henrik Stidsen skrev:

> Jonas Koch Bentzen <ingen.emailadresse@eksempel.dk> wrote in
> news:abt90b$pp0$1@sunsite.dk
>
>> men insisterer samtidig på, at filerne
>> skal ligge som almindelige filer (query string er bandlyst).
>
> Kan du ikke bare bruge tricket med at lave en php fil uden efternavn
> og så bruge $PATH_INFO til at finde ud af hvilken side den skal vise
> ?

Nej, for filsystemet *skal* se således ud:

/Noget/Noget/Andet
/EtEllerAndet/
/NogetHeltAndet/

osv.

Det betyder, at jeg skal have en PHP-fil liggende for hver "mappe" i
roden.

--
Jonas Koch Bentzen

http://understroem.dk/

Peter Brodersen (15-05-2002)
Kommentar
Fra : Peter Brodersen


Dato : 15-05-02 16:19

On Wed, 15 May 2002 17:06:18 +0200, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>Nej, for filsystemet *skal* se således ud:
>
>/Noget/Noget/Andet
>/EtEllerAndet/
>/NogetHeltAndet/
>
>Det betyder, at jeg skal have en PHP-fil liggende for hver "mappe" i
>roden.

Behøver jeg at sige, at MultiViews stadigvæk er din ven? :)

Her skal filerne:
Noget.php
EtEllerAndet.php
NogetHeltAndet.php
... blot oprettes. Så kan man uden problemer, uden videre gå ind på
/Noget
/Noget/
/Noget/Noget
/Noget/Noget/Andet
.... etc.

Hvilket problem er det, du prøver at løse? MultiViews kan fjerne
synligheden af ".php", og $PATH_INFO kan meget vel fungere som en
simpel $QUERY_STRING.

--
- Peter Brodersen

Jonas Koch Bentzen (15-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 15-05-02 17:19

Peter Brodersen skrev:

> On Wed, 15 May 2002 17:06:18 +0200, Jonas Koch Bentzen
> <ingen.emailadresse@eksempel.dk> wrote:
>
>>Nej, for filsystemet *skal* se således ud:
>>
>>/Noget/Noget/Andet
>>/EtEllerAndet/
>>/NogetHeltAndet/
>>
>>Det betyder, at jeg skal have en PHP-fil liggende for hver "mappe" i
>>roden.
>
> Behøver jeg at sige, at MultiViews stadigvæk er din ven? :)
>
> Her skal filerne:
> Noget.php
> EtEllerAndet.php
> NogetHeltAndet.php
> .. blot oprettes.

Ja, det er jo det, jeg siger : ) At man skal have PHP-fil liggende for
hver mappe i roden. Menuen er ikke fast - administratoren skal kunne
oprette en ny via browseradministrationen. Derefter skal
administrationsscriptet så skrive en fil ned på disken, hvis
administratoren opretter en ny "mappe". Det er ikke en fed løsning
efter min mening. Problemet er kort sagt, at kunden vil have et 100%
databasedrevet site - med et 100% "almindeligt" filsystem (det behøver
dog ikke at være rigtige filer - det må godt være mod_rewrite).

--
Jonas Koch Bentzen

http://understroem.dk/

Peter Brodersen (15-05-2002)
Kommentar
Fra : Peter Brodersen


Dato : 15-05-02 17:37

On Wed, 15 May 2002 18:18:40 +0200, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>Ja, det er jo det, jeg siger : ) At man skal have PHP-fil liggende for
>hver mappe i roden.

Overordnet set vil jeg ikke tro at mod_rewrite er så slem, hvis du
blot smider alting hen til samme fil, uden at blande regulære udtryk
ind over.

Endnu et stunt, som jeg selv bruger på http://shor.ter.dk/ som
eksperiment, er at lade 404-handleren lave arbejdet. Jeg har således
links i stil med:
http://shor.ter.dk/550844953
... altså uden "?" eller lignende i starten.

Forvent dog at din errorlog bliver fyldt op.

--
- Peter Brodersen

Jonas Koch Bentzen (15-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 15-05-02 17:47

Peter Brodersen skrev:
>
> Overordnet set vil jeg ikke tro at mod_rewrite er så slem, hvis du
> blot smider alting hen til samme fil, uden at blande regulære udtryk
> ind over.

Hvordan kan jeg undgå at få regulære udtryk ind over? Bruger mod_rewrite
ikke altid regulære udtryk?

--
Jonas Koch Bentzen

http://understroem.dk/

Peter Brodersen (15-05-2002)
Kommentar
Fra : Peter Brodersen


Dato : 15-05-02 18:05

On Wed, 15 May 2002 18:46:59 +0200, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>Hvordan kan jeg undgå at få regulære udtryk ind over? Bruger mod_rewrite
>ikke altid regulære udtryk?

... okay, så komplekse regulære udtryk. Evalueringstiden af en regex
stiger drastisk med kompleksiteten, men for et simpelt udtryk er det
næppe den store belastning, der kommer ind over, fx:

RewriteRule   /   parser.php

Vel tager det da ressourcer at starte en regex-motor op, men der er
langt flere faktorer efterfølgende, fx om man capture'r, har
backreferences, laver case-insensitive-matches, etc.

Kan du ikke evt. lege lidt med ab hhv. med og uden rewriteengine'n
aktiveret, og se om der er nogen nævneværdig forskel? Det, du er
interesseret i, er vel netop rewriteenginens indflydelse på
performance.

--
- Peter Brodersen

Hroi Sigurdsson (16-05-2002)
Kommentar
Fra : Hroi Sigurdsson


Dato : 16-05-02 01:00

Peter Brodersen wrote:

> Vel tager det da ressourcer at starte en regex-motor op, men der er
> langt flere faktorer efterfølgende, fx om man capture'r, har
> backreferences, laver case-insensitive-matches, etc.

Samt hvis man specificerer reglerne i httpd.conf (dvs. ikke runtime i
..htaccess) vil mod_rewrite precompile de regulære udtryk.

> Kan du ikke evt. lege lidt med ab hhv. med og uden rewriteengine'n
> aktiveret, og se om der er nogen nævneværdig forskel? Det, du er
> interesseret i, er vel netop rewriteenginens indflydelse på
> performance.

Mit gæt vil være at overheadet ikke vil kunne måles hvis der samtidig
bruges databasekald.

--
Hroi Sigurdsson hroi@asdf.dk
Danske nyhedsfeeds i RSS-format: http://asdf.dk/rss/da/

Peter Brodersen (16-05-2002)
Kommentar
Fra : Peter Brodersen


Dato : 16-05-02 03:22

On Thu, 16 May 2002 02:00:27 +0200, Hroi Sigurdsson <hroi@asdf.dk>
wrote:

>> Kan du ikke evt. lege lidt med ab hhv. med og uden rewriteengine'n
>> aktiveret, og se om der er nogen nævneværdig forskel? Det, du er
>> interesseret i, er vel netop rewriteenginens indflydelse på
>> performance.
>Mit gæt vil være at overheadet ikke vil kunne måles hvis der samtidig
>bruges databasekald.

Det lyder også som mit gæt. Og ved nærmere eftertanke burde man jo
netop kunne se en procentvis stor forskel, hvis man har et "tomt
site", og det eneste, der kunne belaste, var rewrite-stuntet. Sådan
vil det selvfølgelig ikke forholde sig i praksis, hvor der netop er
mange, mange andre faktorer. Og så burde belastningen af
rewrite-stuntet netop drukne i så meget andet.

--
- Peter Brodersen

Thomas Jensen - pil.~ (15-05-2002)
Kommentar
Fra : Thomas Jensen - pil.~


Dato : 15-05-02 17:47

On Wed, 15 May 2002 18:18:40 +0200, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:


>efter min mening. Problemet er kort sagt, at kunden vil have et 100%
>databasedrevet site - med et 100% "almindeligt" filsystem (det behøver
>dog ikke at være rigtige filer - det må godt være mod_rewrite).

som en nær ven ville sige: "use the filesystem as a database".

han er godt nok besværlig ham din kunde hva' :)

--
vh
Thomas Jensen, pil.dk
Bliv partner: http://pil.dk/partner/

Jonas Koch Bentzen (15-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 15-05-02 17:49

Thomas Jensen - pil.dk skrev:
>
> som en nær ven ville sige: "use the filesystem as a database".

Hvordan skal det forstås?
>
> han er godt nok besværlig ham din kunde hva' :)

Ja, at kombinere et 100% browseradministreret site med URI'er som f.eks.
http://eksempel.dk/Biler/Ford/fiesta.php og
http://eksempel.dk/Cykler/Kildemoes/ er sådan set lidt besværligt : )

--
Jonas Koch Bentzen

http://understroem.dk/

Thomas Jensen - pil.~ (16-05-2002)
Kommentar
Fra : Thomas Jensen - pil.~


Dato : 16-05-02 07:50

On Wed, 15 May 2002 18:49:16 +0200, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>Thomas Jensen - pil.dk skrev:
>>
>> som en nær ven ville sige: "use the filesystem as a database".
>
>Hvordan skal det forstås?

Det er blot hans mantra... specielt når kunder m. heavy-loadløsninger
og store budgetter begynder at tale om store komplekse databasesetups.

Men seriøst kan jeg ikke se hvad din kunde i dette tilfælde vil opnå
v. både at have ting i en database og i et filsystem. Personligt ville
jeg så nok tilstræbe at stille ham spørgsmål så han måtte foretage et
valg. Hvad vindes eksempelvis v. at smide det hele i en database(?).

--
vh
Thomas Jensen, pil.dk
Bliv partner: http://pil.dk/partner/

Jonas Koch Bentzen (16-05-2002)
Kommentar
Fra : Jonas Koch Bentzen


Dato : 16-05-02 08:38

Thomas Jensen - pil.dk skrev:
>
> Men seriøst kan jeg ikke se hvad din kunde i dette tilfælde vil opnå
> v. både at have ting i en database og i et filsystem. Personligt ville
> jeg så nok tilstræbe at stille ham spørgsmål så han måtte foretage et
> valg. Hvad vindes eksempelvis v. at smide det hele i en database(?).

Jeg har diskuteret det med kunden i over et halvt år. Nu gider jeg ikke
mere : ) Han er urokkelig og desværre lige så stædig som mig.

--
Jonas Koch Bentzen

http://understroem.dk/

Lars Petersen (09-06-2002)
Kommentar
Fra : Lars Petersen


Dato : 09-06-02 16:59

I apache's httpd.conf kan du sætte ServerRoot til et php script.
Et eksempel er:

<VirtualHost 192.168.1.2>
ServerName test.ordo.dk
DocumentRoot /www/default/docroot.php
</VirtualHost>

se http://test.ordo.dk/sejt/nok?tror+jeg+da

Nu vil alt uderligere i URL'en blive tilføjet til PATH_INFO og
du kan selvfølgelig stadig tilgå variable i URL'en osv.
docroot.php ser sådan ud:

<?php

echo "Velkommen til docroot.php - PATH_INFO er $_SERVER[PATH_INFO] og
QUERY_STRING er $_SERVER[QUERY_STRING]!";

?>

HTH

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
http://wshlman.moons.dk/ - Say goodbye to GameSpy - A Free Half Life
Manager!
To mail me remove your-pants.



Henrik Stidsen (16-05-2002)
Kommentar
Fra : Henrik Stidsen


Dato : 16-05-02 13:24

Peter Brodersen <professionel@nerd.dk> wrote in
news:l_uE8.4130$4f4.256096@news000.worldonline.dk

> Hvilket problem er det, du prøver at løse? MultiViews kan fjerne
> synligheden af ".php", og $PATH_INFO kan meget vel fungere som en
> simpel $QUERY_STRING.

Der er problemer med $PATH_INFO hvis man "bare" bruger multiviews til
at at fjerne .php - det er ikke altid den kan finde ud af det så vidt
jeg har erfaret...

--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
"These opinions are my own, though for a small fee they
be yours too." -- Dave Haynie

Peter Brodersen (16-05-2002)
Kommentar
Fra : Peter Brodersen


Dato : 16-05-02 18:31

On Thu, 16 May 2002 12:24:09 GMT, Henrik Stidsen <spamtrap@spammer.dk>
wrote:

>Der er problemer med $PATH_INFO hvis man "bare" bruger multiviews til
>at at fjerne .php - det er ikke altid den kan finde ud af det så vidt
>jeg har erfaret...

Det har jeg ikke oplevet. Tænker du ikke "bare" på Apache
1.3.22-problemet, hvor man med MultiViews ikke fik $QUERY_STRING
overført til evt. serverside-parsere?

--
- Peter Brodersen

Henrik Stidsen (17-05-2002)
Kommentar
Fra : Henrik Stidsen


Dato : 17-05-02 17:17

Peter Brodersen <professionel@nerd.dk> wrote in
news:D0SE8.4612$4f4.309659@news000.worldonline.dk

>>Der er problemer med $PATH_INFO hvis man "bare" bruger
>>multiviews til at at fjerne .php - det er ikke altid den kan
>>finde ud af det så vidt jeg har erfaret...
>
> Det har jeg ikke oplevet. Tænker du ikke "bare" på Apache
> 1.3.22-problemet, hvor man med MultiViews ikke fik $QUERY_STRING
> overført til evt. serverside-parsere?

Det kan godt være det er det jeg husker - det lyder rigtigt

--
Henrik Stidsen | HS235-DK | Ikke eksisterende samleobjekt
http://min.hjemmeside.er.paa.http.kolon.2-x-skraastreg.susie.dk/
"These opinions are my own, though for a small fee they
be yours too." -- Dave Haynie

Peter Brodersen (09-06-2002)
Kommentar
Fra : Peter Brodersen


Dato : 09-06-02 07:13

On Wed, 15 May 2002 17:06:18 +0200, Jonas Koch Bentzen
<ingen.emailadresse@eksempel.dk> wrote:

>Nej, for filsystemet *skal* se således ud:
>
>/Noget/Noget/Andet
>/EtEllerAndet/
>/NogetHeltAndet/

Det slog mig pludselig, at Apache da måtte kunne hjælpe på det punkt,
og ved at kigge diverse Apache-udvidelser igennem, ringede en klokke.

Du kan for dit webkatalog blot lave en handler, der har et PHP-script
som action. I sin helt simple form:


# ADVARSEL - KØR IKKE DETTE UDEN VIDERE - LÆS LÆNGERE NEDE
Action my-php-parser /index.php
SetHandler my-php-parser


SetHandler sørger for at alle requests i det katalog bliver fanget
(hvor AddHandler blot gør det for filer med en bestemt extension, fx
..html).

CAVEAT: Ovenstående er ikke nok, men vil gå i løkke, idet når den
forsøger internt at fange index.php, falder det request også for vores
directive, og så går Apache ganske enkelt i løkke. Løsningen er så fx
at have et Files-directive, der omgår index.php. Jeg har ledt lidt, og
kan faktisk ikke finde et "not match", derfor det lidt rodede
eksempel, der udelukker filnavn-requests, der slutter på "php":

<FilesMatch "^(.|..|.*[^p][^h][^p])$">
Action my-php-parser /index.php
SetHandler my-php-parser
</FilesMatch>

Kræmmeragtigt, men jeg kunne ikke lige finde på noget elegant her om
morgenen (og så bruger den endda regex apopros den tidligere
diskussion :)

Du kan se det i simpel drift på:
http://defaul.ter.dk/
.... ja, eller selvfølgelig hvad som helst andet:
http://defaul.ter.dk/Noget/
http://defaul.ter.dk/Noget/Noget/Andet
http://defaul.ter.dk/EtEllerAndet/
http://defaul.ter.dk/DerLiggerIkkeAndreFiler/
http://defaul.ter.dk/BuyMyStuff/NotExist.htm?ProductID=10&UserID=5

--
- Peter Brodersen

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408952
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste