Bienvenidos sean a este pos, hoy veremos una funcion de PHP.
Esta funcion limpia el cache del estado de un archivo. Simplemente se llama a la funcion sin necesidad de pasar algun argumento. Para entenderlo vamos a analizar un ejemplo y para ello, primero crearemos un archivo vacio llamado archivo.txt, si esta en un sistema basado en Unix pueden usar el siguiente comando:
$ touch archivo.txt
Con el archivo creado, pasen a crear un nuevo archivo en el mismo directorio y agreguen el siguiente codigo:
<?php
$archivo = "archivo.txt";
echo substr(sprintf('%o', fileperms($archivo)), -3) . "\n";
chmod($archivo, 0777);
echo substr(sprintf('%o', fileperms($archivo)), -3) . "\n";
chmod($archivo, 0700);
echo substr(sprintf('%o', fileperms($archivo)), -3) . "\n";
?>
Primero asignaremos el nombre del archivo a una variable. Lo siguiente es mostrar los permisos del archivo mediante fileperms, este lo hara en formato octal. Luego cambiamos el permiso mediante chmod y le asignaremos el permiso de control total. Nuevamente mostramos los permisos sobre el archivo, de la misma manera anterior. Por ultimo, volvemos a cambiar los permisos del archivo para que solo el usuario tenga permisos sobre el mismo y finalmente mostramos nuevamente los permisos del archivo. Ejecutemos para ver como es su salida:
$ php cambio.php
644
644
644
$
Observen que siempre nos muestra los permisos del primer llamado, esto es asi porque toma el valor del cache y no verifica al archivo. Pero si lo verificamos, veremos que si hizo las modificaciones:
-rwx------ 1 tinchicus tinchicus 0 dic 5 16:52 archivo.txt
Para poder solucionar la visualizacion debemos modificar el archivo de la siguiente manera:
<?php
$archivo = "archivo.txt";
echo substr(sprintf('%o', fileperms($archivo)), -3) . "\n";
chmod($archivo, 0777);
clearstatcache();
echo substr(sprintf('%o', fileperms($archivo)), -3) . "\n";
chmod($archivo, 0700);
clearstatcache();
echo substr(sprintf('%o', fileperms($archivo)), -3) . "\n";
?>
Simplemente agregamos dos llamados a la funcion clearstatcache antes del llamado a la funcion para mostrar los nuevos permisos despues de los cambios realizados con chmod. Si lo ejecutamos nuevamente tendremos la siguiente salida:
$ php cambio.php
700
777
700
$
Observen como tenemos los permisos establecidos en la primera pasada y los nuevos permisos que establecemos en el codigo pero ahora si podemos verlo. Esto es gracias a la limpieza del cache antes de cada llamada para mostrar a los permisos. Es su unica utilidad pero si quieren saber mas sobre chmod les recomiendo visitar el siguiente post:
[ post chmod ]
En resumen, hoy hemos visto a clearstatcache, que es, para que sirve, como se utiliza y un ejemplo para ver su conducta. Espero les haya resultado de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.


Donatión
It’s for site maintenance, thanks!
$1.50
