<?php
// document the memory usage when we begin
gc_enable();
$memUsage = memory_get_usage();
$memRealUsage = memory_get_usage(true);
echo "Starting out" . PHP_EOL;
echo "Mem usage $memUsage Real usage $memRealUsage" . PHP_EOL;
// build a large array and see how much memory we are using
// for simplicity, we just clone a single object
$sample = new stdClass();
$sample->a = 123;
$sample->b = 456;
$array = [];
for ($i = 0; $i < 30000; $i++) {
// $array[] = $i;
$array[] = clone $sample;
}
$memUsage = memory_get_usage();
$memRealUsage = memory_get_usage(true);
echo "Allocated many items" . PHP_EOL;
echo "Mem usage $memUsage Real usage $memRealUsage" . PHP_EOL;
// then, we unset the entire array to try to free space
unset($array);
// we also force a gc
gc_collect_cycles();
$memUsage = memory_get_usage();
$memRealUsage = memory_get_usage(true);
echo "Variable unset" . PHP_EOL;
echo "Mem usage $memUsage Real usage $memRealUsage" . PHP_EOL;