PHP. variables en memoria compartida
Las variables globales han desparecido. Pero con las Funciones Semáforo y de memoria compartida podemos almacenar variables que sean disponibles desde cualquier script y que conserven su valor fuera de la vida del script.
Yo recomiendo el uso de base de datos y/o el uso de archivos de texto o incluso script que contienen arrays de información.
Pero esto de la variables en memoria compartida puede ser útil, ahí va el ejemplo:
(lo he metido en un objeto para verlo de una forma más clara)
Yo recomiendo el uso de base de datos y/o el uso de archivos de texto o incluso script que contienen arrays de información.
Pero esto de la variables en memoria compartida puede ser útil, ahí va el ejemplo:
(lo he metido en un objeto para verlo de una forma más clara)
/************ class MemVar ***********************/
class MemVar {
var $identifier="";
var $key = "";
function MemVar( $_key ) {
$this->$key = $_key;
$this->$identifier = @shm_attach( $_key );
}
function setValue( $_keyvar , $_valor ) {
@shm_put_var( $this->$identifier , $_keyvar , $_valor );
}
function getValue( $_keyvar ) {
return @shm_get_var( $this->$identifier , $_keyvar );
}
function eliminar( ) {
@shm_remove( $this->$identifier );
}
function close( ) {
@shm_detach( $this->$identifier );
}
}
/************ FIN class MemVar ***********************/
/* poner valor
$memvar = new MemVar( 100 );
$memvar->setValue( 1 , "valor de la variable en memoria compartida" );
echo "puesto valor";
$memvar->close();
*/
/* obtener valor
$memvar = new MemVar( 100 );
echo "valor = ".$memvar->getValue( 1 );
$memvar->close();
*/
Realmente me resulto muy util tu tip, desconocia esas funciones. No sabes si elevan mucho el consumo de recursos del servidor?. Muy bueno.
ResponderEliminarEl acceso a memoria es muchísimo más rápido que el acceso a disco, pero claro ante un reinicio por una intervención en el servidor hay que recargar esas variables en la máquina.
ResponderEliminarPor ello recomiendo manejar parametros y configuraciones desde ficheros de properties o en bb.dd
De todas formas en ww.php.net tienes la información completa:
http://es2.php.net/manual/es/intro.sem.php
Ah, solo funciona en linux y unix, en windows olvidate!!!