Tengo un problema donde ejecutamos una actualización para nuestra aplicación web.clearstatcache + include_path + sessions
Después de que el script de actualización finalice y acceda a la aplicación web a través del navegador, obtenemos errores de archivo no encontrados en require_once() porque cambiamos algunos archivos y PHP aún tiene la estructura de directorios anterior en caché.
Si tenemos los 120 segundos predeterminados para que realpath_cache_ttl expire, todo se resuelve solo, pero esto no es aceptable por razones obvias.
Así que traté de usar clearstatcache con un éxito limitado. He creado un archivo separado (clearstatcache.php) que sólo llama a esta función (este es un archivo de una línea), y se coloca una llamada a ella en nuestro script de instalación a través de rizo:
<?php
clearstatcache(true);
Esto no parece funcionar Sin embargo, si llamo a este archivo a través del navegador, inmediatamente comienza a funcionar.
estoy corriendo la versión PHP 5.3
empecé a ver las diferencias encabezado de solicitud entre el navegador y el rizo, y la única cosa que puedo ver que podría ser importante es la cookie PHPSESSID.
Así que mi pregunta es, ¿importa el PHPSESSID actual (no creo que debería). ¿Estoy haciendo algo mal con mi secuencia de comandos curl? Estoy usando
curl -L http://localhost/clearstatcache.php
EDIT: Sobre la investigación adicional, he decidido esto probablemente tiene algo que ver con múltiples procesos de Apache corriendo. clearstatcache solo borrará el caché del proceso de apache actual: cuando el navegador realiza una solicitud, un proceso de apache diferente atiende la solicitud, y este proceso aún tiene el caché anterior.
AFAIK 'realpath_cache_ttl' y' realpath_cache_size' solo deberían afectar las rutas reales, las rutas al archivo que existe. Al menos esto está demostrado por el hecho de que tengo los valores predeterminados de 120s y 16K en todos mis proyectos y nunca he experimentado tales problemas. ¿Usas alguna caché de código de operación? – zerkms
tiene la razón, la caché es por proceso. – goat