Streaming

Streaming – Comment streamer de grands ensembles de données

Description

Les grands ensembles de données peuvent dépasser la mémoire limite de PHP. Structures_DataGrid propose un support de streaming avec plusieurs drivers de source et de rendu pour éliminer ce problème de limite de mémoire.

Comment utiliser le streaming?

Le streaming peut-être activé en appelant la méthode enableStreaming() de l'objet Structures_DataGrid. Un paramètre optionnel permet de donner le nombre d'enregistrements à lire et écrire à chaque itéreation de stream La taille par défaut du tampon est de 500 enregistrements.

Une fois le streaming activé, seule la quantité d'enregistrement définie pour le tampon sera placée et rendue. Cela peut alors être repeté jusqu'à ce que tous les enregistrements soient traîtés.

Activer le streaming avec un buffer de 1.000 enregistrements

<?php
require 'Structures/DataGrid.php';

// Instantier DataGrid
$datagrid =& new Structures_DataGrid();

// Activer le streaming et fixer la taille du tampon à 1.000 enregistrements
$datagrid->enableStreaming(1000);

// ... et là on utilisera généralement bind(), render()
?>

Driver proposant un support pour le streaming

Although streaming can be used with every DataSource driver, only the following drivers support streaming in a meaningful way: DataObject, DBQuery, DB_Table et MDB2. Streaming support is planned to be added also to the CSV and XML DataSources.

Streaming support is also compatible with every Renderer driver but can currently be used only with CSV and XML Renderers in a meaningful way. Other Renderers might be rewritten in the future for streaming support. Les autres moteurs de rendu doivent être réécrit pour proposer le support du streaming.