mboost-dp1

PHP includes


Gå til bund
Gravatar #1 - gi-jones
22. jun. 2005 14:28
Bliver ens side langsommere, af at man inkluderer funktioner, man ikke har brug for. Jeg spørger fordi jeg er i tvivl om den smarteste måde at holde styr på mine mange funktioner. Kan jeg blot inkluderer mine basis-funcs i alle mine scripts uden at miste performance?
Gravatar #2 - Simm
22. jun. 2005 15:24
Som udgangspunkt skal man undgå at have for mange includes, men jeg har aldrig haft nævneværdige performance-nedsættelser, og jeg kan godt lide at splitte min kode op i moduler. Det øger forståelsen, hvis en anden person skal skrive videre på koden
Gravatar #3 - gi-jones
23. jun. 2005 09:28
Jeg deler dem også op i moduler, det er mere et spørgsmål om, hvorvidt det er en dødssynd at include alle sine databasefunktioner, selvom man kun skal bruge et par stykker af dem. Det gør det bare nemmere at holde styr på sine ting projekterne imellem.
Gravatar #4 - Cyrack
23. jun. 2005 09:42
gi-jones

Umiddelbart nej, men hvis du skal til at skrive et 1337-mega site med en million-milliard funktioner ville det nok være en fordel at skabe et vist overblik over hvad der skal bruges hvor. PHP skal parse alle linjerne for scriptet kan udføres, så hvis du /bare/ skal opdatere en syv, otte rækker i en database er det nok ikke nødvendigt at inkludere hele dit funktions library.

En effektiv måde er forresten at bruge require_once (hvis du er dovn, eller bare mister overblikket), for så loader php rent faktisk kun scriptet én gang (som navnet sjovt nok antyder).

En opdeling i filer giver dig også størrere kontrol over dit script, da det er lettere at gennemskue 20 filer med to funktioner end en fil med 40 funktioner. Faktisk forsøger jeg at holde mine funktioner grupperet i filer (al database connectivity i en fil, manipulation i en eller flere osv.) da du så let kan se hvilke dependecies en del af scriptet har.
Der ud over har jeg også normalt en loader-funktion, hvor jeg blot indsætter navnet på scriptet, og funktionen loader så filen og, hvis det ønskes, tjekker at versionen af den loadede fil er den korrekte. Men det er mest hvis man roder (som jeg gør).
Gravatar #5 - amokk
31. jul. 2005 23:44
#1 i princippet, ja. hver gang dit script bliver kaldt, skal alt hvad der inkluderes, først parses og derefter kompileres.

men det er millisekunder det drejer sig om i værste fald. og hvis det endelig er, kan man smide noget sjov på serveren, som sørger for at compile alle scripts så de er klar til at blive udført noget hurtigere...
Gravatar #6 - JesperJ
3. aug. 2005 14:34
#5 Hvis man skal compile PHP scripts, skal man så ikke have fat i Zends motor, som koster penge? Eller kan man nøjes med PHP Smarty?
Gravatar #7 - amokk
3. aug. 2005 14:48
#6 smarty er vist bare et template-system som gør det nemmere at adskille kode og design

har ik prøvet den Zend engine, har kun læst lidt om den
Gravatar #8 - mrmorris
3. aug. 2005 14:56
#7 Hvad prom nok mener, er at PHP scripting som udgangspunkt ikke kompileres men istedet fortolkes. Visse produkter tilføjer så et caching-lag af kompilerede segmenter, disse incl. den kommercielle Zend engine og den gratis klon PHP-accelerator.
Gravatar #9 - JesperJ
3. aug. 2005 15:19
#7 Njah, du har lidt ret - men det jeg synes er smart ved Smarty er at den cacher sider, så din side - (hvis man udnytter systemet ordentligt) - bliver hurtigere. Jeg har heller ikke prøvet Zend motoren, da jeg simpelthen er for nærig til at købe et produkt jeg ikke aner er godt eller skidt. :-)

#8 Hvilke erfaringer har du med hhv. Zend motoren og PHP-accelerator? Jeg har endnu ikke prøvet nogle af dem, men hvis Zends engine er uovertruffen, så vil jeg da overveje at købe den. :-)
Gravatar #10 - mrmorris
3. aug. 2005 15:48
#9 Jeg har kun prøvet PHP-A og ofte opnås en fordobling i performance, især algoritmer kan man se det på. Så vidt jeg ved, performer Zend engine en smule bedre end PHP-A (muligvis fordi den forsøger at optimere PHP-koden og ikke blot cache kompileringen).

Smarty er forøvrigt ikke just kendt for at forbedre performance, tilføjer jo ekstra abstraktionslag.
Gravatar #11 - amokk
3. aug. 2005 21:20
#8 Det er rigtigt at PHP scripts i første omgang fortolkes, men derefter bliver de på én eller anden måde omsat til de instruktioner som CPUen så udfører. Derfor synes jeg godt det kan give mening at sige, at man kompilerer sine scripts til noget maskinafhængig binær kode, eller i det mindste bytecode som i Java (i Java kalder man det jo også compile og build selv om resultatet er intermediate code og ikke binary code)
Gravatar #12 - mrmorris
3. aug. 2005 23:43
#11 Om scripting fortolkes eller compiles afgøres normalt af bindingen, i JavaScript kan du f.eks. køre en eval() og smække hvad som helt ind, som så fortolkes under "late-binding". Dette kan man så ikke i Java som kompileres til bytekode under "early-binding".

Det samme gør sig gældende med SQL, som så tilbyder "stored procedures" som allerede er parsede, optimerede og kompilerede. PHP-accelerator er således for PHP, hvad "stored procedures" er for SQL.
Gravatar #13 - amokk
3. aug. 2005 23:45
#12 hmmm... er det ik muligt at få lavet sine PHP scripts til noget der i det mindste minder om java bytecode?
Gravatar #14 - mrmorris
3. aug. 2005 23:54
#13 Jo, Zend encoder og Zend optimizer, men encoderen koster knapper! Ved ikke rigtig hvad status er med Zend cache, Zend Performance Suite og alle de andre lignende produktnavne Zend finder på.
Gravatar #15 - Simm
5. aug. 2005 15:31
#13 Der er jo http://www.php-compiler.net/ som kompiler PHP->.Net .. hvis du så holder dig fra Windows Forms, så kan du sikkert køre det via Mono også
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login