Stránky

PHP OPcache kešuje include

V PHP rád používám konstrukci:

$ciselnik = include('ciselnik.php');

kde ciselnik.php je:

return array(1, 2, 3);

Tak mám proměnnou $ciselnik naplněnou polem a nemusím se zabývat např. parsováním YML, můžu použít proměné, můžu ho generovat funkcí atd.

Když chci do číselníků přidat položku, můžu to taky udělat v PHP:

$ciselnik[] = 4;
file_put_contents(
    'ciselnik.php',
    '<?php return ' . var_export($ciselnik, true) . ';'
    );

potud všechno super... ale pokud se teď pokusím načíst nový čiselník, stejně jako prve:

$ciselnik = include('ciselnik.php');

pak

var_export($ciselnik);

vrátí

array ( 0 => 1, 1 => 2, 2 => 3, )

Takže PHP už prostě soubor znovu nenačte a spokojí se s obsahem/výsledkem ze začátku…

Tak jsem na to přišel: tohle divné chování je zapřičiněno OPCachí, kterou jsem měl na lokále zapnutou. (Aby mě to napadlo, ztrávil jsem dvě hodiny snahou zorientovat se ve zdrojácích PHP interpreteru, ale i to se může hodit.)

Štítky: , .
Článek byl naposledy upraven 22. července 2015 12:28.

Moje fotografie

Štítky

Použití fotek

Fotografie na webu, které jsou opatřené vodotiskem jsou moje a jsou chráněné autorským zákonem. Fotky můžete kopírovat na své Facebooky a blogy, pokud jsou nekomerčního charakteru a pokud mě uvedete jako autora. Za odkaz zpět na celou galerii budu rád a uvítám i když mi dáte vedět, že se vám fotka líbí a půjčujete si ji, třeba do mailu nebo komentářů pod galerií. Díky

Profily

Další odkazy