[PHP] include welke kant op?

Pagina: 1
Acties:
  • 128 views sinds 30-01-2008
  • Reageer

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025
Ik gebruik zelf al een tijdje een framework voor mijn PHP applicaties dat er zeg maar een index.php is en die alle noodzakelijke zut doet, alle benodigde bestanden includet, enz. Vervolgens include ie een bestand met de content van de specifieke pagina die hij wil maken. Als client vraag je dus altijd hetzelfde bestand aan, en afhankelijk van de parameters worden andere bestanden geinclude.

Andersom zou je ook kunnen zeggen dat je telkens andere bestanden aanvraagt met daarin de content en dat die allemaal hetzelfde setje includes hebben met al die functies en shit erin.

Nu is mijn vraag: is het eerste performance-wise een stuk minder goed dan het tweede, of maakt het niet zo veel uit?

Rustacean


  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 05-09 20:53
Volgens mij maakt het perfomancewise niet zo heel veel uit, in beide gevallen include() je evenveel bestanden. Ik kan me wel voorstellen dat het iets kan uitmaken als je webserver veel verkeer krijgt op die ene site, maar zelfs dan zou het niet veel uit mogen maken.

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

of maakt het niet zo veel uit?
voor die optie ga ik.
edit:

tenzij de ene manier minder include dan de andere :)

Verwijderd

allebei geeft geen optimale performance, want het script moet nu in principe 2 (of meer) keer parsen, de eerste keer om te kijken welke bestanden er geinclude moeten worden, en daarna nog eens om al die bestanden te parsen. Allemaal extra tijd. Ik weet ook niet of het nou overzichtelijker is, maar dat is persoonlijk.
Ik snap de 2e niet helemaal, maar wat ik eruit begrijp is dat je elke keer een ander bestand neemt, die alle functies include? Ik denk dat je het beste (wat ik doe, wat mij het beste lijkt, mijn persoonlijke mening :)) voor elke pagina een nieuwe script kan maken (dus bijvoorbeeld index.php en gastenboek.php los, en niet index.php?page=gastenboek) en in elke bestand alleen de noodzakelijke bestanden includen, dus niet bij de index.php ook de gastenboek functies includen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

Ga voor optie 2. Niet 1 index, maar losse bestanden waarin je header footer en andere dingen include. Daarvoor zijn verschillende redenen:
1 - Veel logischere urls (niet alles index?pag=blaat, maar gewoon blaat.php)
2 - Minder kans op security problemen (veel sites hebben de mogelijkheid om mensen hun eigen content te kunnen laten includen, zelfs php code die wordt uitgevoerd)
3 - Overhead door het controleren van de geinclude content. Er moet namelijk worden gecontroleerd of de include wel een geldige include is en niet bv het wachtwoorden bestand van de server.

ps: Altijd leuk om dit te proberen te includen >:)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 05-09 20:53
De ``alles via index.php'' manier heeft wel zijn voordelen. Als je een site hebt die overal dezelfde databasetoegang nodig heeft (databaseconnect.php), dezelfde HTML headers (html_header.functies.php), dezelfde menu- en navigatiefuncties (menu.functies.php) etc. is het wel handig, zeker als je een ``site-wide'' aanpassing wil doorvoeren.

Natuurlijk zijn hier zat tegenargumenten voor te geven, en het is ook een beetje persoonlijke voorkeur. Het gaat hier meer om wat jij handig en overzichtelijk vind, dan het geringe verschil in performance (als dat er al is). :)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025
Op woensdag 24 april 2002 13:26 schreef Janoz het volgende:
Ga voor optie 2. Niet 1 index, maar losse bestanden waarin je header footer en andere dingen include. Daarvoor zijn verschillende redenen:
1 - Veel logischere urls (niet alles index?pag=blaat, maar gewoon blaat.php)
2 - Minder kans op security problemen (veel sites hebben de mogelijkheid om mensen hun eigen content te kunnen laten includen, zelfs php code die wordt uitgevoerd)
3 - Overhead door het controleren van de geinclude content. Er moet namelijk worden gecontroleerd of de include wel een geldige include is en niet bv het wachtwoorden bestand van de server.
1. Momenteel gebruik ik nog index.php/blaat, maar ik wil proberen mod_rewrite te gebruiken om dat om te schrijven naar /blaat. Probleem opgelost.
2 & 3. Afgevangen.

Dus volgens mij is dat niet zo'n probleem. Ik heb tot nu toe het model met de content-include (het eerste dus) gebruikt, dat werkt erg prettig imo. Onder andere omdat ik nu dus al mijn include()s op één plaats heb staan. Als ik met een heleboel files ga werken en ik wil een nieuwe file includen, of ik heb een file niet meer nodig, dan heb ik een probleem.

Dus het gaat me redelijk puur om de performance, als die een stuk slechter is, ga ik toch maar dat andere gebruiken.

En als ze allebei niet erg goed zijn, wat is dan in PHP *wel* een goede manier om een applicatie framework op te bouwen?

Rustacean


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

Ik zou graag je huisje willen testen op veiligheid, maar hij werkt niet....

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • eborn
  • Registratie: April 2000
  • Laatst online: 08-09 12:50
Persoonlijk vind ik de eerste oplossing ook het makkelijkst werken. Vooral omdat je dan juist [n]niet[/b] zoveel losse .php files krijgt :)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025
Op woensdag 24 april 2002 13:58 schreef Janoz het volgende:
Ik zou graag je huisje willen testen op veiligheid, maar hij werkt niet....
Probeer t maar liever op http://hebe.xavamedia.nl/. Die doet het nu wel, volgens mij.

Rustacean


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

Op woensdag 24 april 2002 14:03 schreef eborn het volgende:
Persoonlijk vind ik de eerste oplossing ook het makkelijkst werken. Vooral omdat je dan juist [n]niet[/b] zoveel losse .php files krijgt :)
Hoezo??? of je de content nu include in je index, of je 'index' nu include in je content.. mischien heb je 1 pagina meer (omdat je index moet opsplitsen in header en footer)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025
Op woensdag 24 april 2002 14:12 schreef Janoz het volgende:
Hoezo??? of je de content nu include in je index, of je 'index' nu include in je content.. mischien heb je 1 pagina meer (omdat je index moet opsplitsen in header en footer)
Maakt inderdaad geen f*ck uit.

Rustacean


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 08-09 17:10
Waarom maak je niet doodleuk een include.php? Die roep je dan overal vandaan op (blaat.php, index.php en gastenboek.php), en die include pakt weer de benodigde includes..

Gastenboek.php:
PHP:
1
<?include ("includes.php");load_includes ("gastenboek");?>

includes.php:
PHP:
1
<?$includes["gastenboek"][0] = "sign_functions.php";$includes["gastenboek"][1] = "read_functions.php";$includes["gastenboek"][2] = "admin_functions.php";function load_includes ($from) {  if (isset ($includes[$from])) {    while (list (, $filetoinclude) = each ($includes[$from])) {      include ($filetoinclude);    } // while  } //if} // function?>

Even uit me duim gezogen.. Zou wel eens leuk kunnen zijn volgens mij ;)

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

Je hebt dus wel controle op de geinclude bestanden? (let er wel op.. security by obscurity is no security at all!)

Dan moet je neit zeggen dat je punt 2 over kunt slaan door je rewriterule

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025
De rewriterule is alleen voor de mooiere urls, ik heb controle op geinclude files.

Rustacean


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025
Op woensdag 24 april 2002 14:15 schreef elviver het volgende:
Waarom maak je niet doodleuk een include.php? Die roep je dan overal vandaan op (blaat.php, index.php en gastenboek.php), en die include pakt weer de benodigde includes..
Jah, dat kan natuurlijk, maar daar gaat het hier niet echt om. :)

Rustacean


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 08-09 17:10
Op woensdag 24 april 2002 14:20 schreef Manuzhai het volgende:

[..]

Jah, dat kan natuurlijk, maar daar gaat het hier niet echt om. :)
Dan snap ik de post kennerlijk niet.. Hij doet nu alles vanuit index.php zodat alles lekker makkelijk bij elkaar staat, de includes. Omgekeerd moet ie in alle contence controleren of het wel goed geinclude wordt.. Dat wil ie niet.. Dan pak je toch een middenweg?

Of is de post echt anders bedoeld?

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025
Op woensdag 24 april 2002 14:22 schreef elviver het volgende:
Dan snap ik de post kennerlijk niet.. Hij doet nu alles vanuit index.php zodat alles lekker makkelijk bij elkaar staat, de includes. Omgekeerd moet ie in alle contence controleren of het wel goed geinclude wordt.. Dat wil ie niet.. Dan pak je toch een middenweg?

Of is de post echt anders bedoeld?
De post is echt anders bedoeld. Het gaat mij om de performance van include verschillende bestanden in een bestand versus include een bestand in verschillende bestanden. En daarbij kwam Janoz als terzijde nog even op het security issue dat komt kijken bij params includen.

Rustacean


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op woensdag 24 april 2002 13:42 schreef Freak_NL het volgende:
De ``alles via index.php'' manier heeft wel zijn voordelen. Als je een site hebt die overal dezelfde databasetoegang nodig heeft (databaseconnect.php), dezelfde HTML headers (html_header.functies.php), dezelfde menu- en navigatiefuncties (menu.functies.php) etc. is het wel handig, zeker als je een ``site-wide'' aanpassing wil doorvoeren.
Ehh.. dat kan ook via manier 2?

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Verwijderd

maar waarom doe je het allemaal in een file? overzichtelijker is het misschien wel, maar de snelheid...
als je alles include, dus ook dingen die je niet nodig hebt, dat zijn allemaal verloren secondes... plain tekst die je laadt is veel sneller dan dat je die eerst moet includen (of uit db halen)

  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025
Op woensdag 24 april 2002 18:32 schreef jurriebur het volgende:
als je alles include, dus ook dingen die je niet nodig hebt, dat zijn allemaal verloren secondes... plain tekst die je laadt is veel sneller dan dat je die eerst moet includen (of uit db halen)
Ik laad geen dingen die ik niet nodig heb.

Rustacean


Verwijderd

Op donderdag 25 april 2002 02:38 schreef Manuzhai het volgende:

[..]

Ik laad geen dingen die ik niet nodig heb.
sorry, mijn fout :)
zo kwam het mij beetje over...

maar toch vind ik het werken met losse bestanden (die eventueel andere benodigde shit laden) beter/sneller/handiger werken dan 1 bestand die alles include... just MHO
Pagina: 1