| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Kan det betale sig at bruge include i en i~ Fra : Mads Horndrup | 
  Dato :  19-01-10 15:26 |  
  |  
 
            Hejsa.
 Kan det betale sig at have denne kode:
 <?php include("file includes/eksempel.php"); ?>
 Hvor eksempel.php ser sådan her ud:
 kage-kage-kage
 <?php include("file includes/pandekage.php"); ?>
 Altså: Kan jeg have en include file, inden i en file der allerede
 er included et sted?
 Vil det få min side at loade langsommere?
  -Mads
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! =>  http://www.html.dk/tutorials
            
             |   |   
            
        
 
            
         
           Mads Horndrup (19-01-2010) 
         
	
            | Kommentar Fra : Mads Horndrup | 
  Dato :  19-01-10 15:31 |  
  |  
 
            ..og loader siden langsommere hvis jeg har for mange includes?
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! =>  http://www.html.dk/tutorials
            
             |   |   
            
        
 
            
         
           Bertel Lund Hansen (19-01-2010) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  19-01-10 16:36 |  
  |  
 
            Mads Horndrup skrev:
 > Kan det betale sig at have denne kode:
 > <?php include("file includes/eksempel.php"); ?>
 Lav koden så den er overskuelig og nem at vedligeholde. Sæt
 spekulationer over hastighed langt ned på din prioritetsliste.
 Indlejrede includes kan godt give mening hvis man har flere
 undermoduler der f.eks. deler en stribe funktioner..
 Brug include_once(). Så kan du kalde et modul flere gange uden at
 der inkluderes mere end nødvendigt.
 > Vil det få min side at loade langsommere?
 Fisk.
 -- 
 Bertel
 http://bertel.lundhansen.dk/         FIDUSO:  http://fiduso.dk/
            
             |   |   
            
        
 
            
         
           Birger Sørensen (19-01-2010) 
         
	
            | Kommentar Fra : Birger Sørensen | 
  Dato :  19-01-10 17:11 |  
  |  
 
            Mads Horndrup skrev den 19-01-2010:
 > Hejsa.
 >
 > Kan det betale sig at have denne kode:
 >
 > <?php include("file includes/eksempel.php"); ?>
 >
 >
 > Hvor eksempel.php ser sådan her ud:
 >
 > kage-kage-kage
 > <?php include("file includes/pandekage.php"); ?>
 >
 >
 > Altså: Kan jeg have en include file, inden i en file der allerede
 > er included et sted?
 > Vil det få min side at loade langsommere?
 >
 >  -Mads
 Hvad mener du med, om det kan betale sig?
 Hvis din index f.eks. includerer en fil der behandler menuer og 
 menuvalg, kan du i den sagtens have en include, der henter data for det 
 aktuelle menuvalg.
 Så Ja - du kan godt. Men om det er overskueligt og besparende er nok et 
 andet spørgsmål.
 Det har nok virkning på hastigheden - men man skal nok måle den i 
 millisekunder, så det er ikke noget man behøver prioritere særlig højt.
 Birger
 -- 
 http://varmeretter.dk - billig, sund og hurtig mad
 http://bbsorensen.dk
            
             |   |   
            
        
 
            
         
           Peter Farsinsen (19-01-2010) 
         
	
            | Kommentar Fra : Peter Farsinsen | 
  Dato :  19-01-10 18:45 |  
  |   
            Mads Horndrup wrote:
 
 > Altså: Kan jeg have en include file, inden i en file der allerede
 > er included et sted?
 > Vil det få min side at loade langsommere?
 
 Fyr den af og gør, hvad der passer dig bedst. Så længe du kan finde en 
 evt. fejl er der ingen problemer.
 
 Hvis hastigheden bliver et problem, bør du kigge på caching af 
 resultatet af dine scripts.
 
 Desuden mener jeg, du bør bruge require_once() i stedet for include(). 
 require() og require_once() smider en fatal error, hvis filen ikke 
 findes (så afviklingen stopper helt), hvilket ikke er tilfældet med 
 include() og include_once() - de smider bare en fejl, men afvikler så 
 resten af dit script. Hvis en fil mangler, kan det næppe være meningen 
 at scriptet skal fortsætte med at afvikles.
 
 - Peter
 
  
            
             |   |   
            
        
 
            
         
           Johan Holst Nielsen (19-01-2010) 
         
	
            | Kommentar Fra : Johan Holst Nielsen | 
  Dato :  19-01-10 20:48 |  
  |   
            Peter Farsinsen wrote:
 > Mads Horndrup wrote:
 > 
 >> Altså: Kan jeg have en include file, inden i en file der allerede
 >> er included et sted?
 >> Vil det få min side at loade langsommere?
 > 
 > Fyr den af og gør, hvad der passer dig bedst. Så længe du kan finde en
 > evt. fejl er der ingen problemer.
 > 
 > Hvis hastigheden bliver et problem, bør du kigge på caching af
 > resultatet af dine scripts.
 > 
 > Desuden mener jeg, du bør bruge require_once() i stedet for include().
 > require() og require_once() smider en fatal error, hvis filen ikke
 > findes (så afviklingen stopper helt), hvilket ikke er tilfældet med
 > include() og include_once() - de smider bare en fejl, men afvikler så
 > resten af dit script. Hvis en fil mangler, kan det næppe være meningen
 > at scriptet skal fortsætte med at afvikles.
 
 Man skal dog være opmærksom på der kan være et issue omkring
 performance, når man leger med include_once og require_once - det er
 ikke det bedste rent performancemæssigt, hvis vi taler om store systemer
 med mange inkluderede filer (hvilket jeg dog ikke tror er tilfældet i
 denne sag!). Så det er skidt at vende sig til at bruge den, hvis der
 ikke er en årsag (hvilket der sjældnet bør være!).
 
 I systemer hvor der inkluderes rigtig mange filer kan der komme en
 *betydelig* performanceoptimering, blot ved at rette alle require_once
 (eller include_once) til require (eller include).
 
 Mvh
 Johan
 
  
            
             |   |   
            
        
 
            
         
            Peter Farsinsen (19-01-2010) 
         
	
            | Kommentar Fra : Peter Farsinsen | 
  Dato :  19-01-10 22:26 |  
  |   
            Johan Holst Nielsen wrote:
 >> Desuden mener jeg, du bør bruge require_once() i stedet for include().
 >> require() og require_once() smider en fatal error, hvis filen ikke
 >> findes (så afviklingen stopper helt), hvilket ikke er tilfældet med
 >> include() og include_once() - de smider bare en fejl, men afvikler så
 >> resten af dit script. Hvis en fil mangler, kan det næppe være meningen
 >> at scriptet skal fortsætte med at afvikles.
 >
 > Man skal dog være opmærksom på der kan være et issue omkring
 > performance, når man leger med include_once og require_once - det er
 > ikke det bedste rent performancemæssigt, hvis vi taler om store systemer
 > med mange inkluderede filer (hvilket jeg dog ikke tror er tilfældet i
 > denne sag!). Så det er skidt at vende sig til at bruge den, hvis der
 > ikke er en årsag (hvilket der sjældnet bør være!).
 >
 > I systemer hvor der inkluderes rigtig mange filer kan der komme en
 > *betydelig* performanceoptimering, blot ved at rette alle require_once
 > (eller include_once) til require (eller include).
 
 Det er rigtigt. Nu har jeg desværre ikke lige et link til kilden, men 
 har læst en blog post om der nærmest intet overhead er, hvis man bruger 
 f.eks. APC. Det virker ret sandsynligt at man vil gøre det, hvis man 
 inkluderer mange filer.
 
 - Peter
  
            
             |   |   
            
        
 
            
         
           Mads Horndrup (19-01-2010) 
         
	
            | Kommentar Fra : Mads Horndrup | 
  Dato :  19-01-10 21:21 |  
  |  
 
            Tak for alle svarene.
 Det endte med at jeg gjorde sådan her:
 <?php include("file includes/head.php"); ?>
 <?php include("file includes/body_start.php"); ?>
 <?php include("file includes/menu.php"); ?>
 <?php include("file includes/artikel_start.php"); ?><?php include("file
 includes/forside.php"); ?>
 <?php include("file includes/artikel_end.php"); ?>
 <?php include("file includes/sidefod.php"); ?>
 <?php include("file includes/body_end.php"); ?>
 Da det siger mig mest.
 Jeg ved godt at jeg ikke behøvede at include forside.php (kunne bare ha'
 skrevet den direkte) men det her foretrækker jeg da jeg ikke får pillet
 ved noget så der opstår fejl :)
 Siden er på horndrup.eu/lalala.php hvis i vil se virkningen (;
  -Mads
 -- 
 Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
  - Pædagogiske tutorials på dansk
  - Kom godt i gang med koderne
 KLIK HER! =>  http://www.html.dk/tutorials
            
             |   |   
            
        
 
            
         
            Chano Andersen (23-01-2010) 
         
	
            | Kommentar Fra : Chano Andersen | 
  Dato :  23-01-10 19:38 |  
  |   
            Mads Horndrup skrev:
 > Tak for alle svarene.
 > Det endte med at jeg gjorde sådan her:
 > <?php include("file includes/head.php"); ?>
 > 
 > <?php include("file includes/body_start.php"); ?>
 > <?php include("file includes/menu.php"); ?>
 > <?php include("file includes/artikel_start.php"); ?><?php include("file
 > includes/forside.php"); ?>
 > <?php include("file includes/artikel_end.php"); ?>
 > <?php include("file includes/sidefod.php"); ?>
 > <?php include("file includes/body_end.php"); ?>
 
 Hvorfor alle de PHP blokke? Følgende vil være langt mere læseligt:
 
 <?php
 include("file includes/head.php");
 include("file includes/body_start.php");
 include("file includes/menu.php");
 include("file includes/artikel_start.php");
 include("file includes/forside.php");
 include("file includes/artikel_end.php");
 include("file includes/sidefod.php");
 include("file includes/body_end.php");
 ?>
 
 I øvrigt er det ikke en god idé med mellemrum i fil og mappenavne. Det 
 risikere bare at give en masse bøvl.
 
 - Chano Andersen
  
            
             |   |   
            
        
 
            
         
             Bertel Lund Hansen (24-01-2010) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  24-01-10 01:33 |  
  |   |   |   
            
        
 
            
         
              Philip Nunnegaard (24-01-2010) 
         
	
            | Kommentar Fra : Philip Nunnegaard | 
  Dato :  24-01-10 21:34 |  
  |  
 
            Bertel Lund Hansen skrev:
 > Ligger Dennis Munding i dit killfilter?
 OK! Stofanet-indlæggene igen.
 Både dit og Dennis Mundings indlæg er også først dukket op hos mig nu.
 -- 
 Philip -  http://www.chartbase.dk |  http://www.hitsurf.dk
            
             |   |   
            
        
 
            
         
               Bertel Lund Hansen (25-01-2010) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  25-01-10 00:07 |  
  |   |   |   
            
        
 
            
         
                Erik Ginnerskov (27-01-2010) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  27-01-10 13:03 |  
  |  
 
            Bertel Lund Hansen wrote:
 > Philip Nunnegaard skrev:
 >
 >>> Ligger Dennis Munding i dit killfilter?
 >
 >> OK! Stofanet-indlæggene igen.
 >
 > Åh ja, selvfølgelig.
 Brug dog news.dotsrc.org, så er I ude over det problem. Det er jo ikke 
 første gang, Stofa har problemer med opdateringen.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://ginnerskov.dk -  http://html-faq.dk 
            
             |   |   
            
        
 
            
         
                 Bertel Lund Hansen (27-01-2010) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  27-01-10 13:48 |  
  |  
 
            Erik Ginnerskov skrev:
 > Brug dog news.dotsrc.org, så er I ude over det problem. Det er jo ikke 
 > første gang, Stofa har problemer med opdateringen.
 news.stofanet.dk har haft færre problemer end news.dotsrcorg.sk.
 Jeg regner dem dog begge for suveræne newsservere.
 Jeg tænker som så at når jeg har adgang til en god newserver via
 mit abonnement, så er der ingen grund til at belaste en gratis
 tjeneste.
 -- 
 Bertel
 http://bertel.lundhansen.dk/         FIDUSO:  http://fiduso.dk/
            
             |   |   
            
        
 
            
         
                  Bertel Lund Hansen (27-01-2010) 
         
	
            | Kommentar Fra : Bertel Lund Hansen | 
  Dato :  27-01-10 14:52 |  
  |   |   |   
            
        
 
            
         
              Chano Andersen (05-02-2010) 
         
	
            | Kommentar Fra : Chano Andersen | 
  Dato :  05-02-10 22:01 |  
  |   
            Den 24-01-2010 01:32, Bertel Lund Hansen skrev:
 > Chano Andersen skrev:
 >
 >> Hvorfor alle de PHP blokke? Følgende vil være langt mere læseligt:
 >
 > Ligger Dennis Munding i dit killfilter?
 >
 
 For at være ærlig, så ved jeg faktisk ikke hvor den funktion findes i 
 Thunderbird. Så det er nok nærmere det andetsteds omtalte stofanet problem.
 
 - Chano Andersen
  
            
             |   |   
            
        
 
            
         
            Dennis Munding (22-01-2010) 
         
	
            | Kommentar Fra : Dennis Munding | 
  Dato :  22-01-10 00:58 |  
  |  
 
            Hej Mads!
 Mads Horndrup skrev...
 > Tak for alle svarene.
 > Det endte med at jeg gjorde sådan her:
 > <?php include("file includes/head.php"); ?>
 >
 > <?php include("file includes/body_start.php"); ?>
 > <?php include("file includes/menu.php"); ?>
 > <?php include("file includes/artikel_start.php"); ?><?php include("file
 > includes/forside.php"); ?>
 > <?php include("file includes/artikel_end.php"); ?>
 > <?php include("file includes/sidefod.php"); ?>
 > <?php include("file includes/body_end.php"); ?>
 Hvis du helt bogstaveligt har en fil, der ser ud som ovenstående, så kan jeg 
 spare dig for lidt kode...:
 <?php
 include("file includes/head.php");
 include("file includes/body_start.php");
 include("file includes/menu.php");
 include("file includes/artikel_start.php");
 include("file includes/forside.php");
 include("file includes/artikel_end.php");
 include("file includes/sidefod.php");
 include("file includes/body_end.php");
 ?>
 Det vil give samme resultat.
 Er ikke så meget inde i php, at jeg ved, om det kan komprimeres yderligere, 
 men det er der sikkert en anden, der ved...   
Med venlig hilsen
 -- 
 Dennis Munding
 a.k.a. The Eye - Member of the PosseGrim Squad
 http://pgsquad.com/
"When you hear the wind - you're already dead..."
            
              |   |   
            
        
 
            
         
             Erik Ginnerskov (27-01-2010) 
         
	
            | Kommentar Fra : Erik Ginnerskov | 
  Dato :  27-01-10 13:00 |  
  |  
 
            Dennis Munding wrote:
 > Hvis du helt bogstaveligt har en fil, der ser ud som ovenstående, så
 > kan jeg spare dig for lidt kode...:
 >
 > <?php
 > include("file includes/head.php");
 > include("file includes/body_start.php");
 > include("file includes/menu.php");
 > include("file includes/artikel_start.php");
 > include("file includes/forside.php");
 > include("file includes/artikel_end.php");
 > include("file includes/sidefod.php");
 > include("file includes/body_end.php");
 > ?>
 > Det vil give samme resultat.
 > Er ikke så meget inde i php, at jeg ved, om det kan komprimeres
 > yderligere, men det er der sikkert en anden, der ved...   
Det er vist så meget, som det kan komprimeres. Men du har ret, der er ikke 
 nogen grund til at lukke php ned efter hver enkelt include og så genåbne php 
 for næste include.
 -- 
 Med venlig hilsen
 Erik Ginnerskov
 http://ginnerskov.dk -  http://html-faq.dk 
            
             |   |   
            
        
 
            
         
             Chano Andersen (05-02-2010) 
         
	
            | Kommentar Fra : Chano Andersen | 
  Dato :  05-02-10 22:00 |  
  |  
 
            Den 22-01-2010 00:58, Dennis Munding skrev:
 > Er ikke så meget inde i php, at jeg ved, om det kan komprimeres
 > yderligere, men det er der sikkert en anden, der ved...   
Eneste mulighed for at pakke det mere sammen ville være at fjerne 
 linjeskift, eller se om man kan inkludere nogle af tingene i en af de 
 andre filer.
 - Chano Andersen
            
              |   |   
            
        
 
            
         
           Daniel Egeberg (19-01-2010) 
         
	
            | Kommentar Fra : Daniel Egeberg | 
  Dato :  19-01-10 17:30 |  
  |   
            On Jan 19, 3:25 pm, Mads Horndrup <madshornd...@gmail.com> wrote:
 > Hejsa.
 >
 > Kan det betale sig at have denne kode:
 >
 > <?php include("file includes/eksempel.php"); ?>
 >
 > Hvor eksempel.php ser s dan her ud:
 >
 > kage-kage-kage
 > <?php include("file includes/pandekage.php"); ?>
 
 Om det kan betale sig afhænger jo af hvad du prøver på at gøre. Det er
 lidt svært at sige ud fra dit eksempel. Hvis det giver en logisk
 inddeling og strukturering i din kode, så vil jeg mene at det sagtens
 kan betale sig.
 
 > Alts : Kan jeg have en include file, inden i en file der allerede
 > er included et sted?
 
 Man kan sagtens have includes inde i "includede" filer. Det PHP gør er
 ikke andet end at tage koden i filen og "indsætte" den i den anden fil
 før den bliver eksekveret. Fra PHPs synspunkt er der altså ingen
 forskel på om din kode ligger i en fil du includer eller om den står
 direkte i din anden fil (så længe filen altså findes).
 
 > Vil det få min side at loade langsommere?
 
 Disk I/O er generelt langsomt, så jo flere gange du skal have fat i
 ting på din harddisk i runtime, jo langsommere bliver dit program. Så
 ja, jo flere includes, jo langsommere bliver det. Det er dog
 formentlig ikke noget der vil have særligt stor betydning for dig med
 mindre du har en side med rigtigt meget traffik. Et kald til
 include_once vil også være langsommere end include (tilsvarende for
 require_once or require) da den skal hold en liste over alle includede
 filer og tjekke den først.
 
 En opcode cache som APC hjælpe mod begge ting. Når PHP har parset et
 stykke kode får den nogle opcodes som er instruktioner til PHPs kerne
 (Zend Engine/ZE). Det en opcode cache gør at den gemmer resultatet
 dette i hukommelsen, som er meget hurtigere at læse fra og skrive til
 end harddisken. Det betyder at hvis du ikke har ændret i din fil, så
 behøver filen ikke at blive indlæst og parset igen; den kan bare
 hentes direkte fra hukommelsen. APC giver dig også mulighed for helt
 at springe harddisken over (så den slet ikke undersøger om filerne er
 blevet ændret). Det betyder dog at du skal genstarte din webserver (og
 miste din cache!) hver gang du ændrer dine filer.
 
 Generelt er det altid anbefalet et køre APC (eller tilsvarende) i et
 produktionsmiljø og det kan give performance forbedringer på op til
 flere størrelsesordener.
 
 Bottom line: Du behøver generelt ikke at bekymre dig om at have for
 mange includes eller requires. Du vinder meget mere ved at have
 overskuelig og velstruktureret kode end hvad du måtte miste i
 performance, og hvis du endelig har nok traffik til at det har
 betydning så vil APC ordne det meste.
  
            
             |   |   
            
        
 
            
         
           Birger Sørensen (20-01-2010) 
         
	
            | Kommentar Fra : Birger Sørensen | 
  Dato :  20-01-10 07:19 |  
  |  
 
            Daniel Egeberg:
 8X
 > Man kan sagtens have includes inde i "includede" filer. Det PHP gør er
 > ikke andet end at tage koden i filen og "indsætte" den i den anden fil
 > før den bliver eksekveret. Fra PHPs synspunkt er der altså ingen
 > forskel på om din kode ligger i en fil du includer eller om den står
 > direkte i din anden fil (så længe filen altså findes).
 8X
 http://dk2.php.net/manual/en/function.include.php :
 "When a file is included, parsing drops out of PHP mode and into HTML 
 mode at the beginning of the target file, and resumes again at the end. 
 ..."
 Det er "resultatet" af den includede fil der indsættes - ikke filen 
 selv.
 Ellers ganske enig.
 Birger.
 -- 
 http://varmeretter.dk - billig, sund og hurtig mad
 http://bbsorensen.dk
            
             |   |   
            
        
 
            
         
           Daniel Egeberg (20-01-2010) 
         
	
            | Kommentar Fra : Daniel Egeberg | 
  Dato :  20-01-10 03:51 |  
  |  
 
            On Jan 20, 7:18 am, Birger Sørensen <s...@bbsorensen.com> wrote:
 > Daniel Egeberg:
 > 8X> Man kan sagtens have includes inde i "includede" filer. Det PHP gør er
 > > ikke andet end at tage koden i filen og "indsætte" den i den anden fil
 > > før den bliver eksekveret. Fra PHPs synspunkt er der altså ingen
 > > forskel på om din kode ligger i en fil du includer eller om den står
 > > direkte i din anden fil (så længe filen altså findes).
 >
 > 8X
 >
 >  http://dk2.php.net/manual/en/function.include.php:
> "When a file is included, parsing drops out of PHP mode and into HTML
 > mode at the beginning of the target file, and resumes again at the end.
 > .."
 >
 > Det er "resultatet" af den includede fil der indsættes - ikke filen
 > selv.
 > Ellers ganske enig.
 >
 > Birger.
 Ja, jeg kunne måske godt have forklaret det bedre. Det er klart at den
 selvfølgelig ikke bare copy-paster koden ind i den anden fil. Det der
 sker når PHP møder et include/require(_once) er at compile_filename()
 i ZE bliver kaldt. Den includede fil vil så overtage både EG
 (symbol_table) og EG(active_symbol_table), der er hashtabeller som
 indeholder symbolnavne i hhv. det globale og lokale virkefelt (så man
 kan sige at den bare arbejder videre). Når PHP starter med at parse en
 fil starter den altid uden for "PHP mode" så den smider bare alt hvad
 den møder indtil den kommer til "<?php" til STDOUT, og det er sådan
 set bare det dit citat fra manualen mener. Når den er færdig med den
 includede fil fortsætter den fra hvor den slap.
 Så ja, det er sådan set "resultatet" du får igen, men jeg synes det
 giver fint mening rent kognitivt at hvis man har følgende to filer:
 fil1.php:
 <?php
 $foo = 'bar';
 include 'fil2.php';
 ?>
 fil2.php:
 <?php
 echo $foo;
 ?>
 Så har du *reelt* følgende:
 <?php
 $foo = 'bar';
 echo $foo;
 ?>
 Eller for at være helt nøjagtig når nu den starter uden for "PHP
 mode":
 <?php
 $foo = 'bar';
 ?><?php
 echo $foo;
 ?><?php ?>
 Den vigtige pointe er selvfølgelig at du i løbet af dette vil få en
 række opcodes i den inkluderede fil og hvis du kører APC så kan den
 cache disse. Dvs. at næste gang du inkluderer den, så kan den bare
 hente disse opcodes og bruge dem direkte.
 Mht. opcode caching kan jeg nævne at jeg driver en "mellemstor" side
 og her bliver opcode cachen ramt ca. 52 gange hvert sekund. Det er
 altså 52 gange i sekundet at PHP slipper for at parse en masse filer
 om og om igen. Står man med en side om Facebook bliver gevinsten
 naturligt meget større.
 --
 Daniel Egeberg
 degeberg@php.net
            
              |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |