Thomas. Skrevet 14. juli 2008 Del Skrevet 14. juli 2008 (endret) Hvordan kan jeg skrive ut innholdet i en .txt fil ? Har prøvd dette: $fa = fopen("sider/inc/gjester.txt", "r"); while ( $linje = fgets($fa) ) { echo $linje . "<br>"; } - Da blir det helt blankt, kan noen hjelpe meg? Endret 14. juli 2008 av php_user Lenke til kommentar
Danny92 Skrevet 14. juli 2008 Del Skrevet 14. juli 2008 $fa = fopen("sider/inc/gjester.txt", "r"); fclose($fa); echo $fa; funker for meg.. Lenke til kommentar
Thomas. Skrevet 14. juli 2008 Forfatter Del Skrevet 14. juli 2008 $fa = fopen("sider/inc/gjester.txt", "r");fclose($fa); echo $fa; funker for meg.. Resource id #7 Jeg driver på localhost.. Lenke til kommentar
Danny92 Skrevet 14. juli 2008 Del Skrevet 14. juli 2008 http://www.tizag.com/phpT/fileread.php les litt her da... Lenke til kommentar
nree Skrevet 14. juli 2008 Del Skrevet 14. juli 2008 <?php include("sider/inc/gjester.txt"); ?> Lenke til kommentar
Per Kristian Skrevet 15. juli 2008 Del Skrevet 15. juli 2008 print file_get_contents('filnavn.txt'); Det er litt underlig at dette skal funke for Danny92: $fa = fopen("sider/inc/gjester.txt", "r");fclose($fa); echo $fa; $fa er ikke innholdet i fila, men file-handelen for den åpnede fila. Lenke til kommentar
Lokaltog Skrevet 15. juli 2008 Del Skrevet 15. juli 2008 <?php echo file_get_contents("sider/inc/gjester.txt"); ?> RTFM. Lenke til kommentar
loathsome Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 (endret) <?php echo file_get_contents("sider/inc/gjester.txt"); ?> RTFM. echo file_get_contents('sider/inc/gjester.txt'); Ingen variabler == enkle fnutter Endret 16. juli 2008 av loathsome Lenke til kommentar
Lokaltog Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 echo file_get_contents('sider/inc/gjester.txt'); Ingen variabler == enkle fnutter Takk for at du påpeker en totalt meningsløs ting i kodeeksemplet mitt. Lenke til kommentar
Wackamole Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 *snip* Takk for at du påpeker en totalt meningsløs ting i kodeeksemplet mitt. Vell, totalt meningsløst er det vell ikke, da behandlingstiden til doble fnutter (") vil være litt tregere enn enkle fnutter ('), men ikke mye, så jeg ser poenget ditt Lokaltog. Lenke til kommentar
Jonas Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Leste du i det hele tatt hva Lokaltog linket til? Excution-time er upåvirket. Det finnes ca fjorten hundre andre ting ved et script en kan bry seg om før fnutter gjør noen forskjell. Lenke til kommentar
loathsome Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 Det stemmer, men gode kodeskikker er likevel en bra ting å praktisere, og dette gjelder alle programmeringsspråk. Om jeg skriver koden min sånn for($i=0;$i<100;$i++){echo"hello world";} I stedet for for($i=0; $i < 100; $i++){ echo 'hello world'; } blir det ikke nødvendigvis tregere. You get the point. Lenke til kommentar
Lokaltog Skrevet 16. juli 2008 Del Skrevet 16. juli 2008 La meg ta et eksempel: Jeg skriver alltid SQL-spørringer med double quotes, selv om jeg vet at jeg ikke skal ha noen variabler i spørringen. Årsaken er enkel, jeg synes kode er mest ryddig når man ikke må escape quotes i strenger, og jeg vet at jeg aldri bruker double quotes i en SQL-spørring: "SELECT * FROM table WHERE col = 'val' and col2 ='val2'" vs. 'SELECT * FROM table WHERE col = \'val\' and col2 = \'val2\''. Er dette også en dårlig kodevane? I så fall vil jeg gjerne høre begrunnelsen din for det. Poenget mitt er uansett det samme - Det spiller ingen rolle hva man gjør. Det er så mange andre ting som har innflytelse på ytelsen i et PHP-script, så å begynne å korrigere kode som er riktig uten å ha noen god grunn for det synes jeg er ganske unødvendig. Lenke til kommentar
Thomas. Skrevet 17. juli 2008 Forfatter Del Skrevet 17. juli 2008 (endret) Det er så mange andre ting som har innflytelse på ytelsen i et PHP-script Kan du nevne noen ? Endret 17. juli 2008 av php_user Lenke til kommentar
loathsome Skrevet 17. juli 2008 Del Skrevet 17. juli 2008 @Lokaltog: Det er ingen dårlig kodevane, det jeg mente var at så lenge en vet at en streng ikke skal inneholde variabler kan man likesågodt holde seg til enkle fnutter. Dessuten vil echo 'Your name is ', $name være raskere en echo "Your name is $name" (echo er for øvrig målt raskere en print også) - samma om det er millisekunder eller ikke Like greit å bare gjøre det. Jeg bruker også doble fnutter i SQL-spørringer av samme grunn som deg. Det er så mange andre ting som har innflytelse på ytelsen i et PHP-script Kan du nevne noen ? http://www.google.no/search?q=php+optimiza...lient=firefox-a Lenke til kommentar
Ernie Skrevet 17. juli 2008 Del Skrevet 17. juli 2008 Nå er kvaliteten på de tipsene som dukker opp først veldig tvilsom da. Først og fremst listes de som et faktum uten noe bevis, og for det andre så tviler jeg på at forskjellen er betydelig. Altså, kort sagt, mye av det man finner av «PHP optimalisering» er ren bullshit eller i bestefall noe du tjener 1ms på over flere tusen linjer kode etter å ha brukt flere timer på å skrive om. Det er rett og slett poengløst å f.eks bytte ut " med ' bare fordi det relativt sett er en stor forskjell, mens det i virkeligheten er marginalt. Andre ting man visstnok tjener tid på i følge de første resultatene i søket ditt (ingen av de viser til resultater fra testing): «If a method can be static, declare it static. Speed improvement is by a factor of 4.»At overhead-en er 4x mindre har lite å si når innholdet i funksjonen tar ørten ganger med tid. Inntjeningen er sannsynligvis langt mindre enn 1ms. «require_once() is expensive»At require_once tar tid er ingen bombe. Man henter inn en PHP-fil, og den skal tolkes. At det tar mer tid enn require og include generelt er ytterst tvilsomt. Å unngå require og include generelt er nok heller en ide. «echo is faster than print.»Meget mulig, men igjen, dette er inntjening under 1ms. «if (!isset($foo{5})) { echo "Foo is too short"; } er bedre enn if (strlen($foo) < 5) { echo "Foo is too short"; }»Sannsynligvis nok et eksempel på inntjening under 1ms. «Bruk ++$i fremfor $i++»Gjett hva dette er? «Use full paths in includes and requires, less time spent on resolving the OS paths.»Prinsipielt er jeg enig, men å argumentere med at det tar mindre tid blir for dumt. Ja, det tar nok mindre tid, men nei, man tjener nok ikke mye på det. «Close your database connections when you're done with them»Igjen, prinsipielt enig, men jeg har min tvil at det er noen praktisk forskjell i ytelse. «Incrementing a local variable in a method is the fastest. Nearly the same as calling a local variable in a function.» «Incrementing a global variable is 2 times slow than a local var.» «Incrementing an object property (eg. $this->prop++) is 3 times slower than a local variable.»De tre punktene her kan godt stemme, men det er poengløst med mindre man har en loop som går 100.000 ganger og gjøre det. Mest sannsynligvis mikroskopisk inntjening. «Incrementing an undefined local variable is 9-10 times slower than a pre-initialized one.»Joda, men var det målt med eller uten initiering av variablen? Har min sterke mistanke om at dette er målt mot en allerede definert variabel. Uannsett, poengløst med mindre man har veldig mange udefinerte variabler man skal bruke. Personlig tror jeg ikke at jeg runder 1000 variabler i bruk, kanskje ikke 100 heller. «Just declaring a global variable without using it in a function also slows things down (by about the same amount as incrementing a local var). PHP probably does a check to see if the global exists.»Minimal inntjening. «Methods in derived classes run faster than ones defined in the base class.»... «Don't split methods too much, think, which code you will really re-use»Det finnes grenser, men generelt sett blir dette bare for dumt. Funksjoner etc. vil gjøre koden betydelig mer oversiktelig, og en ev. inntjening veier overhode ikke opp for dette. «You can always split the code of a method later, when needed» ... hvilket betyr ekstraarbeid ... Det er vel på sin plass at jeg nevner noe som faktisk har noe for seg: Ikke bestem maksgrensen i en for-loop ut fra en funksjon (f.eks for ($i = 0; $i < count($var); $i++) ). Pga. at PHP vil kjøre funksjonen hver bidige runde i loopen er det bedre å bruke en variabel hvor antallet er satt på forhånd. På små looper er det lite å hente, men de litt større vil ha nytte av det (kanskje et helt ms ). PHP har flere list-klasser/objekter med en «random access»-funksjon. Unngå så langt det går å bruke disse. Spesielt gjelder dette hvis du bruker en for-loop til å gå igjennom listen. Bruk heller foreach, siden lister ikke er bygget for «random access» og foreach trenger ikke dette. Cache ting du bruker ofte, enten til fil eller bruk memcache. F.eks «ti siste fra forumet» er en god kandidat. Unngå @. Det skal aldeles ikke mange av de før du kan måle det. Ikke bruk include/require unødig. Hent bare inn filer du faktisk trenger, og ikke minst opprett bare de objektene du faktisk trenger. Her kan det være endel å hente, dvs. over 10ms hvis det er snakk om mye kode eller flere unødige objekter. Dog, det aller viktigste er å ha en god struktur på ting. Det som oftes kan optimaliseres er ikke enkeltlinjer, men hele algoritmer. Lenke til kommentar
Jonas Skrevet 17. juli 2008 Del Skrevet 17. juli 2008 Dog, det aller viktigste er å ha en god struktur på ting. Det som oftes kan optimaliseres er ikke enkeltlinjer, men hele algoritmer. Må si meg enig i det siste her. En kan legge mange timer inn i optimalisering i henhold til slike lister, men man vil ikke komme langt før man kan språket skikkelig slik at man kan utnytte det til sitt fulle potensiale, om det så gjelder PHP eller MySQL, og innehaver en god «algoritmisk tenkning». Lenke til kommentar
JohndoeMAKT Skrevet 17. juli 2008 Del Skrevet 17. juli 2008 for ($i = 0; $i < count($var); $i++) ) for ( $i = 0, $iMax = count( $asdf ); $i < $iMax; $i++ ) {} Så lite scope som mulig på variablene. Ellers bør det aller første du gjør når du skal optimalisere noe være å legge inn xdebug og kikke på output i Kcachegrind. Lenke til kommentar
Ernie Skrevet 17. juli 2008 Del Skrevet 17. juli 2008 for ($i = 0; $i < count($var); $i++) ) for ( $i = 0, $iMax = count( $asdf ); $i < $iMax; $i++ ) {} Så lite scope som mulig på variablene. Det fungerer nok i andre språk, men i PHP vil $iMax være lengden av $asdf også etter loopen. Lenke til kommentar
JohndoeMAKT Skrevet 17. juli 2008 Del Skrevet 17. juli 2008 (endret) Så variablen ligger i metodescope? Gjelder det også for $i ? EDIT: Jeg testet akkurat selv og ser at både $iMax og $i overlever videre etter at loopen har sluttet. Da lærte jeg noe nytt i dag også. Endret 17. juli 2008 av JohndoeMAKT Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå