Im avendo un problema in cui eseguiamo un aggiornamento per la nostra applicazione web.clearstatcache + include_path + sessions
Dopo che lo script di aggiornamento è stato completato e accedi all'app Web tramite il browser, otteniamo errori di file non trovati su require_once() perché abbiamo spostato alcuni file e PHP ha ancora la vecchia struttura di directory nella cache.
Se per default realpath_cache_ttl è scaduto il valore predefinito di 120 secondi, tutto si risolve da solo, ma ciò non è accettabile per ovvi motivi.
Così ho provato a usare clearstatcache con un successo limitato. Ho creato un file separato (clearstatcache.php) che chiama questa funzione solo (si tratta di un file di una riga), e messo una chiamata ad essa nel nostro script di installazione via ricciolo:
<?php
clearstatcache(true);
Questo non sembra funzionare , tuttavia se chiamo questo file tramite il browser, inizia immediatamente a funzionare.
Sto correndo versione PHP 5.3
ho iniziato a guardare le differenze richiesta di intestazione tra il mio browser e ricciolo, e l'unica cosa che posso vedere che potrebbe questione è il cookie PHPSESSID.
Quindi la mia domanda è, l'attuale PHPSESSID importa (non penso che dovrebbe). Sto facendo qualcosa di sbagliato con il mio script ricciolo? Sto usando
curl -L http://localhost/clearstatcache.php
EDIT: Dopo ulteriori ricerche, ho deciso questo probabilmente ha qualcosa a che fare con più processi in esecuzione apache. clearstatcache cancellerà solo la cache dell'attuale processo di apache: quando il browser sta effettuando una richiesta, un processo Apache diverso serve la richiesta e questo processo ha ancora la vecchia cache.
AFAIK 'realpath_cache_ttl' e' realpath_cache_size' devono interessare solo i percorsi reali, i percorsi del file esistente. Almeno questo è dimostrato dal fatto che ho i valori predefiniti di 120s e 16K su tutti i miei progetti e non ho mai avuto problemi simili. Usi qualche cache Opcode? – zerkms
sei corretto, la cache è per processo. – goat