[php] Snelste/efficientste manier bestand in $var

Pagina: 1
Acties:

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Hey,

weten jullie misschien wat de meest efficiente/snelste manier is om de inhoud van een bestand (bijv. een .txt bestand) in een variabele te krijgen om er daarna mee verder te werken?

Denk eraan dat dit bijvoorbeeld 50 keer op een bepaalde pagina moet gebeuren, hoe kan ik dit dan het beste doen?

Edit:
op dit moment haal ik ze nog steeds uit de database (dat is helemaal traag) maar ik wilde het op deze manier gaan doen:

$var = join ('', file ('bestand.txt'));

Is dit de beste manier?
PS: onze server ondersteunt ook cURL, ik heb al 's gezien dat het daar ook mee kan, maar of dat sneller/beter is...?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Als je op 1 pagina 50x een bestand in moet lezen, is het dan niet een optie om eens over cache na te gaan denken? Of zijn die 50 verschillende bestanden daar te 'variabel' voor?

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


  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op dinsdag 05 maart 2002 10:11 schreef Janoz het volgende:
Als je op 1 pagina 50x een bestand in moet lezen, is het dan niet een optie om eens over cache na te gaan denken? Of zijn die 50 verschillende bestanden daar te 'variabel' voor?
Hmm daar heb je wel gelijk in, nee die bestanden zijn altijd hetzelfde, tot ik ze handmatig aanpas en weer upload :)

(zijn template bestanden voor m'n forum)

  • Grum
  • Registratie: Juni 2001
  • Niet online
PHP:
1
<?$theFileName = 'filename.txt';$theFile     = fopen($theFileName, 'r');$theContents = fread($theFile, filesize($theFileName));fclose($theFile);?>

?

en anders zelf even benchen ?

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op dinsdag 05 maart 2002 10:13 schreef Grum het volgende:

en anders zelf even benchen ?
Dat zelf benchen lukt mij nooit echt goed, als ik dat doe dan zie ik nooit een verschil dat echt opvalt.
(ik doe he tdan met een microtime teller en voer iets aardig vaak uit, maar dan verandert die tijd die er uit komt ook nog wel 's).

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Op dinsdag 05 maart 2002 10:12 schreef TangLeFuzZ het volgende:

[..]

Hmm daar heb je wel gelijk in, nee die bestanden zijn altijd hetzelfde, tot ik ze handmatig aanpas en weer upload :)

(zijn template bestanden voor m'n forum)
Mischien is het dan handiger om een programmatje te maken (in php of wat dan ook) die die 50 textbestandjes 1x omzet naar 1 include bestand. Hierin maak je dan een array met 50 strings die je in 1x include en op alle plekken waar die tekst gebruikt moet worden zet je gewoon echo $textbestandje[23]; neer oid.

Dan hoef je maar 1x die 50 txt bestandjes in te verwerken, en in je forum 1 include extra gebruiken.

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


  • Grum
  • Registratie: Juni 2001
  • Niet online
jah maar je kan 2 methodes wel vergelijken en adh daarvan zien of et veel scheelt of niet

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Ik zie trouwens net ook op http://php.net/file dat die methode nog niet echt veilig is...

Janoz: thnx, misschien dat dat een goeie oplossing is ja.

  • Grum
  • Registratie: Juni 2001
  • Niet online
hij is niet BINARY safe ... maar aangezien et over simpele text zooi gaat lijkt dat me neit iets waar je je zorgen over hoeft te maken :P

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op dinsdag 05 maart 2002 11:28 schreef Grum het volgende:
hij is niet BINARY safe ... maar aangezien et over simpele text zooi gaat lijkt dat me neit iets waar je je zorgen over hoeft te maken :P
Foutje..iets te snel gelezen :)

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 05 maart 2002 10:21 schreef Janoz het volgende:
Mischien is het dan handiger om een programmatje te maken (in php of wat dan ook) die die 50 textbestandjes 1x omzet naar 1 include bestand.
Het zou me helemaal niet verbazen als blijkt dat 50 bestandjes inlezen sneller is dan 1 include ;)

Maar ok, ook dat moet je even testen :)

Verwijderd

Voor tekst doe ik (bijna) altijd gewoon:
PHP:
1
<?function readf($file, $separator){    if(!isset($separator)) $separator = '\n';    $returnthis = implode($separator, file($file));    return $returnthis;}?>

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

Korter:
PHP:
1
<?function readf($file, $separator="\n"){    return implode($separator, file($file));}?>

>:)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

indeeed. ;)

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 26-08 16:09
BTW file() en include() zijn wel behoorlijk link. Check HEEL goed de namen van de bestanden voor je ze include, is een beetje vervelend als mensen een willekeurig bestand kunnen gaan includen omdat jij magicGPC aan hebt staan en je je variablen niet netjes initialiseerd :D

Beetje rottig als mensen een PHP file op hun eigen server op jou server kunnen laten draaien :D

Maar als je gewoon files opent en meteen als HTML naar de browser schopt is het niet zo link allemaal. Wordt gevaarlijker als je werkt met include() of eval().

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

include gebruik ik nooit met vars eigenlijk. Daarvoor zijn veel betere oplossingen... En tja ... niet alleen de levenstein distance tussen evil en eval is erg klein :)

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


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op dinsdag 05 maart 2002 14:28 schreef thomaske het volgende:
Korter:
En nog steeds zal het efficienter zijn om het gewoon met fread() uit te voeren ipv file()

Dat scheelt weer de op en afbouw van een array.

  • TangLeFuzZ
  • Registratie: Juni 2001
  • Laatst online: 23-08 15:45
Op dinsdag 05 maart 2002 15:24 schreef bartvb het volgende:
BTW file() en include() zijn wel behoorlijk link. Check HEEL goed de namen van de bestanden voor je ze include, is een beetje vervelend als mensen een willekeurig bestand kunnen gaan includen omdat jij magicGPC aan hebt staan en je je variablen niet netjes initialiseerd :D

Maar als je gewoon files opent en meteen als HTML naar de browser schopt is het niet zo link allemaal. Wordt gevaarlijker als je werkt met include() of eval().
Nee precies, ik hoef ze niet te checken omdat ik zelf de namen opgeef, worden geen variabelen gebruikt in die file(); functie...

Voorbeeldje:
$posting = addslashes(implode ('', file ('posting.txt')));

Daar is niks mis mee toch? :)
(nee ;))
Pagina: 1