Olen miettinyt, että minkälaisissa tilanteissa kannattaa käyttää php:n file-funktiota ja minkälaisissa taas fopen-funktiota, kun kysymyksessä on tiedoston lukeminen. File on periaatteessa helpompikäyttösempi, kun tiedostoa pystyy käsittelemään taulukkomuodossa, mutta sitten taas on se riski, että php:n memory_limit täyttyy, eikä skripti enää toimi oikein. Olennaisin kysymys onkin se, että kuinka suurella todennäköisyydellä memory_limit täyttyy tai kuinka monta tiedoston riviä vastaa memory_limitin suuruuttaa, joka itselläni ainakin on 8MB?
Jos tietoa voi olla paljon ja kaikkea tietoa ei tarvitse pitää samaan aikaan muistissa, fopen voi olla hyvä valinta.
Yksi tiedoston merkki vie tilaa yhden tavun. Joten jos joka rivillä on 100 merkkiä, noin 80000 riviä vie tilaa 8 Mt.
Voit tutkia PHP-skriptin muistinkäyttöä funktiolla memory_get_usage.
Antti Laaksonen kirjoitti:
Yksi tiedoston merkki vie tilaa yhden tavun. Joten jos joka rivillä on 100 merkkiä, noin 80000 riviä vie tilaa 8 Mt.
Toisaalta koska PHP on skriptikieli, taulukon rakenteen ylläpito vaatii myös muistia ja tyhjäkin teksti vie jonkin verran tilaa.
Jos serveri sen sallii niin memory_limittiä kyllä voi muuttaakin ini_set()
:llä.
<?php ini_set('memory_limit', '20M'); ?>
Kätevä esim. silloin kun on kyse kuvien muokkauksesta GD:llä ja muistia tarvitaan joskus aika paljonkin.
temu92 kirjoitti:
Jos serveri sen sallii niin memory_limittiä kyllä voi muuttaakin
ini_set()
:llä.<?php ini_set('memory_limit', '20M'); ?>Kätevä esim. silloin kun on kyse kuvien muokkauksesta GD:llä ja muistia tarvitaan joskus aika paljonkin.
Useimmilla servereillä tämä on kyllä estetty.
Aihe on jo aika vanha, joten et voi enää vastata siihen.