Puede crear un nuevo gestor de memoria
(objeto Zend_Memory_Manager) usando el método
Zend_Memory::factory($backendName [, $backendOprions]).
El primer argumento $backendName es una cadena que
nombra una de las implementaciones de backend soportadas por Zend_Cache.
El segundo argumento $backendOptions es un array opcional
de opciones de backend.
$backendOptions = array(
'cache_dir' => './tmp/' // Directory where to put the swapped memory blocks
);
$memoryManager = Zend_Memory::factory('File', $backendOptions);
Zend_Memory usa los backends de Zend_Cache como
proveedores de almacenamiento.
Puede usar el nombre especial 'None' como nombre de backend,
además de los backends estándar de Zend_Cache.
$memoryManager = Zend_Memory::factory('None');
Si usa 'None' como nombre de backend, el gestor de memoria nunca intercambiará (swap) los bloques de memoria. Esto es útil si sabe que la memoria no es limitada o que el tamaño total de los objetos nunca alcanza el límite de memoria.
El backend 'None' no necesita que se especifique ninguna opción.
Esta sección describe la creación y destrucción de objetos en la memoria gestionada, y las opciones para controlar el comportamiento del gestor de memoria.
Cree objetos movibles (objetos que pueden ser intercambiados) usando
el método Zend_Memory_Manager::create([$data]):
$memObject = $memoryManager->create($data);
El argumento $data es opcional y se usa para
inicializar el valor del objeto. Si se omite el argumento
$data, el valor será una cadena vacía.
Cree objetos bloqueados (objetos que no se intercambian) usando
el método Zend_Memory_Manager::createLocked([$data]):
$memObject = $memoryManager->createLocked($data);
El argumento $data es opcional y se usa para
inicializar el valor del objeto. Si se omite el argumento
$data, el valor será una cadena vacía.
Los objetos de memoria se destruyen y eliminan automáticamente de la memoria cuando salen del ámbito (scope):
function foo()
{
global $memoryManager, $memList;
...
$memObject1 = $memoryManager->create($data1);
$memObject2 = $memoryManager->create($data2);
$memObject3 = $memoryManager->create($data3);
...
$memList[] = $memObject3;
...
unset($memObject2); // $memObject2 is destroyed here
...
// $memObject1 is destroyed here
// but $memObject3 object is still referenced by $memList
// and is not destroyed
}
Esto se aplica tanto a objetos movibles como bloqueados.
El límite de memoria es un número de bytes permitidos para ser usados por los objetos movibles cargados.
Si la carga o creación de un objeto hace que el uso de memoria supere este límite, el gestor de memoria intercambia otros objetos.
Puede obtener o establecer la configuración de límite de memoria usando los
métodos getMemoryLimit() y
setMemoryLimit($newLimit):
$oldLimit = $memoryManager->getMemoryLimit(); // Get memory limit in bytes $memoryManager->setMemoryLimit($newLimit); // Set memory limit in bytes
Un valor negativo para el límite de memoria significa "sin límite".
El valor predeterminado son los dos tercios del valor de 'memory_limit' en el php.ini, o "sin límite" (-1) si 'memory_limit' no está definido en el php.ini.
MinSize es un tamaño mínimo de los objetos de memoria que pueden ser intercambiados por el gestor de memoria. El gestor de memoria no intercambia objetos que sean más pequeños que este valor. Esto reduce el número de operaciones de intercambio/carga.
Puede obtener o establecer el tamaño mínimo usando los
métodos getMinSize() y
setMinSize($newSize):
$oldMinSize = $memoryManager->getMinSize(); // Get MinSize in bytes $memoryManager->setMinSize($newSize); // Set MinSize limit in bytes
El valor predeterminado del tamaño mínimo es 16 KB (16384 bytes).