Creare Memory Leak con PHP
(Troppo) Spesso quando uno dei nostri server web (Apache) ha problemi il ditino viene puntato sugli sviluppatori imputando alle loro applicazioni fantomatici memory leak.
Convinto che la ragione sia sempre nel mezzo ho deciso di scrivere un piccolo script PHP che volutamente perde memoria.
Lo script è molto banale e consente di perdere un numero arbitrario di MB di Memoria.
<?php
define('MEMORY_LOST', 10); //Memory that will be lost (MB)
define('VERBOSE', TRUE); // Debug?
define('DATO', 'DATO+DATODATO+DATODATO+DATODATO+DATODATO+DATO');
header('Content-type: text/plain');
printf("START: ON STARTUP YOU USE %s MB \n", (memory_get_usage()/1048576) );
$play = TRUE;
while ($play) {
$foo = new Foo();
unset($foo);
if(VERBOSE){
echo round(memory_get_usage()/1048576 , 3) . "\n";
}
if( (memory_get_usage()/1048576) > MEMORY_LOST ){
$play = FALSE;
}
}
printf('STOP: YOU HAVE LOST %s MB', (memory_get_usage()/1048576) );
class
Foo {
function __construct() {
$this->data = array_pad(array(),100, DATO );
$this->bar = new Bar($this);
}
}
class
Bar {
function __construct($foo = null) {
$this->data = array_pad(array(),2000, DATO );
$this->foo = $foo;
}
}
?>Con questo script penso che sia più facile vedere gli effetti del caso poco probabile che ci mangiamo mega di memoria!!