Avatar billede krestian Nybegynder
15. april 2004 - 07:26 Der er 11 kommentarer og
1 løsning

Hvor mange includes i en php-fil?

Hej alle

Jeg tænker på, hvor mange includes det er hensigtsmæssigt at inkludere i sine php-filer!

Er der øvre grænse for ovenstående og kan det give performance problemer, hvis der er mange includes?

Hilsen
Krestian
Avatar billede henriktha Nybegynder
15. april 2004 - 07:59 #1
Der er ikke nogen speciel grænse for antallet, og performance kommer an på hvad dine includes indeholder.

Generelt vil jeg sige at performance næsten ligger på den samme som hvis du kun havde 1 php fil, bortset fra de ekstra linier med include.

Du skal dog huske på at en include er en fil der skal læses på serveren og det kan selvfølgelig trække lidt ned hvis man har en langsom disk.
Avatar billede steen_hansen Forsker
15. april 2004 - 08:16 #2
Du inkluderer såmænd bare noget kode fra et ekstern dokument, som lige så godt kunne stå i dit hoveddokument. Fordelen ved at isolere noget kode i et eksternt dokument er, at du kan inkludere det i mange dokumenter, og så skal du jo kun rette det ét sted, når det skal slå igennem i alle de dokumenter, som inkluderer din fil.

Det tager ikke noget performance, som Henrik skriver. Det kan kun din kodning gøre.
Avatar billede Slettet bruger
15. april 2004 - 08:16 #3
Men hvis man har ram nok, burde de mest benyttede include-filer jo ligge i ram, så de ikke skal læses fra disk hele tiden.

Det afhænger dog så meget af, hvad du laver og hvordan (og på hvilket maskineri), at det ikke giver meget mening at svare på generelt.
Avatar billede krestian Nybegynder
15. april 2004 - 08:31 #4
>> sandbox

Jeg bruger w2k/iis!

Kan du fortælle lidt mere om, hvordan jeg ligger include-filer i min RAM? Eller måske et par links, hvor jeg kan læse lidt om det!
Avatar billede henriktha Nybegynder
15. april 2004 - 08:34 #5
Dine include filer ender automatisk i din ram når de er læst fra harddisken
Avatar billede steen_hansen Forsker
15. april 2004 - 08:40 #6
Når du besøger en hjemmeside, der er lavet i PHP eller ASP, og som benytter inkluderede filer, sender din browser en forespørgsel til serveren; nu vil du benytte en eller anden funktion, eller se en bestemt side.

Serveren tager så dokumentet, smider koden fra de inkluderede dokumenter ind i hoveddokumentet og smider det via nettet ned i din browser. Prøv at benytte "Vis kilde" (højreklik på en side). Her ser du ganske almindelig html-tekst, du ser ingen includes. Det er fordi det er inkluderet. Nu er der ikke et inkluderet dokument i et hoveddokument, men nu kan du se hele koden, som den var tiltænkt den skulle se ud. Eksempel:

HOVEDOKUMENT:

<html>
<head>
<title></title>
</head>

<body>

<!-- #include virtual="/includes/minfil.php" -->

</body>

</html>

MINFIL.PHP:

<table>
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>

- vises på denne måde i browseren:

<html>
<head>
<title></title>
</head>

<body>

<table>
  <tr>
    <td>&nbsp;</td>
  </tr>
</table>

</body>

</html>
Avatar billede steen_hansen Forsker
15. april 2004 - 08:42 #7
Det er ikke antallet af inkluderede dokumenter, du skal tage højde for, men din kode.
Avatar billede steen_hansen Forsker
15. april 2004 - 08:47 #8
sandbox: Inkluderede filer bliver ikke cachet i browseren. De bliver inkluderet i de dokumenter, som hives ind i browseren. Det er hele dette dokument, der bliver cachet.
Avatar billede henriktha Nybegynder
15. april 2004 - 09:01 #9
Steen >> hmm.... når der er tale om php og performance er der vel tale om hvad der sker serverside... altså ikke hvad der kommer i besøgendes browser men derimod hvad der bliver SENDT til den.
Avatar billede steen_hansen Forsker
15. april 2004 - 09:06 #10
Ok, så talte vi om to ting: Hvad der sker på hhv. klienten og serveren. Det er korrekt, at det har noget at sige mht. caching serverside. Men så er der tale om komplicerede systemer og/eller STORE filer, hvis det skal kunne få indflydelse på serverside. Sorry, sandbox. Troede du mente hvad der blev cachet hos klienten :o)
Avatar billede Slettet bruger
15. april 2004 - 10:41 #11
De fleste styresystemer (tror jeg da) har en form for cache til at gøre læsning fra filsystemet hurtigere, således at relativt små filer, der bliver læst relativt ofte, vil altid ligge i denne cache, så de bliver kun læst fra disken første gang. Dette er en del af selve operativsystemet. Det er altså ikke noget, du behøver at gøre noget særligt for at få til at virke. Bare smæk nok RAM i serveren, og det burde ske automagisk.

Der kan dog være forskel mellem forskellige operativsystemer angående hvor effektivt de håndterer fordelingen af RAM mellem kørende programmer, inaktive programmer, cache til filsystem og diverse buffers til andre perifere enheder (som f.eks. net).

Jeg har ikke noget kendskab til W2Ks interne virkemåde i forbindelse med caching af filer, så jeg aner ikke om eller hvordan man eventuelt kan stille på det, men jeg vil tro at standardopsætningen burde være rimelig.

Angående brug af includefiler, vil jeg næsten sige, at din performance, når du laver (og redigerer)                koden, bør være den største faktor, når du beslutter, om du vil splitte noget op i flere filer.                  Sagt på en anden måde: gør det på den måde, hvor du arbejder bedst, for det har normalt ikke nogen stor indflydelse på din servers performance. (Måske med mindre vi snakker hundredvis af forskellige include-filer.)
Avatar billede steen_hansen Forsker
23. april 2004 - 18:51 #12
Lægger et svar
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