PHP Classes

File: README.md

Recommend this page to a friend!
  Packages of Ramesh Narayan Jangid (Sharma)   Heavy Objects   README.md   Download  
File: README.md
Role: Documentation
Content type: text/markdown
Description: Read me to learn from an documented example
Class: Heavy Objects
Store and retrieve objects or arrays in files
Author: By
Last change: Readme
Date: 4 days ago
Size: 2,672 bytes
 

Contents

Class file image Download

Heavy-Objects

Manage Heavy(RAM intensive) Array/Object Collections via single File in filesystem using limited RAM.

Examples

Memory usage by 1000 raw objects each with 100 keys (~12 MB)

<?php
$rows = [];

for ($i = 0; $i<1000; $i++) {
    $row = [];
    for($j=0;$j<100;$j++) {
        $row["Key{$j}"] = rand();
    }
    $rows[] = $row;
}

echo '<pre>';
echo memory_get_usage(); // 11,842,144 bytes

Memory usage by 1000 HeavyObjects each with 100 keys (~2.5 MB)

<?php

require_once __DIR__ . '/AutoloadHeavyObjects.php';

use HeavyObjects\HeavyObject;

$stream = fopen(filename: "php://temp", mode: "wr+b");
$heavyObject = new HeavyObject(stream: $stream);

// Load/Write/Update records to file
for ($i = 0; $i<1000; $i++) {
    $row = [];
    for($j=0;$j<100;$j++) {
        $row["Key{$j}"] = rand();
    }
    $heavyObject->write($row, $keys = "row:{$i}");
}

echo '<pre>';
echo memory_get_usage(); // 2,659,224 bytes

Copy Objects

<?php

require_once __DIR__ . '/AutoloadHeavyObjects.php';

use HeavyObjects\HeavyObject;

$stream = fopen(filename: "php://temp", mode: "wr+b");
$heavyObject = new HeavyObject(stream: $stream);

// Load/Write/Update records to file
for ($i = 0; $i<5; $i++) {
    $row = [];
    for($j=0;$j<100;$j++) {
        $row["Key{$j}"] = rand();
    }
    $heavyObject->write($row, $keys = "row:{$i}");
    $heavyObject->write($row, $keys = "row1:keys:{$i}");
}
$heavyObject->copy('row:0','row1:0');
$heavyObject->copy('row:0','row1:keys:2');
$heavyObject->copy('row:0','row1:keys:_C_'); // row1:_C_ represents $index['row1'][]

Move Objects

<?php

require_once __DIR__ . '/AutoloadHeavyObjects.php';

use HeavyObjects\HeavyObject;

$stream = fopen(filename: "php://temp", mode: "wr+b");
$heavyObject = new HeavyObject(stream: $stream);

// Load/Write/Update records to file
for ($i = 0; $i<5; $i++) {
    $row = [];
    for($j=0;$j<100;$j++) {
        $row["Key{$j}"] = rand();
    }
    $heavyObject->write($row, $keys = "row:{$i}");
    $heavyObject->write($row, $keys = "row1:keys:{$i}");
}
$heavyObject->move('row:0','row1:0');
$heavyObject->move('row:0','row1:keys:2');
$heavyObject->move('row:0','row1:keys:_C_'); // row1:_C_ represents $index['row1'][]

? Contributing

Issues and feature requests are welcome.<br /> Feel free to share them on issues page

Author

? Ramesh N. Jangid (Sharma)

? License

Copyright © 2026 Ramesh N. Jangid (Sharma).<br /> This project is MIT licensed.