Example #12 - Using pCache for live charting
This example shows how to use the
pCache class
to enhance graph rendering time. Data used to build the graph are static in this example, this will probably be not the
case in your application : replace the pData stuff with your own. The unique ID associated to this chart is
Graph1,
it is needed for the pCache library to get only cached files associated to this script.
After filling the pData structure we're invoking the
GetFromCache
function. If a cached copy already exists, it is sent to the user browser and the script is interrupted meaning that all
the following lines will never be executed.
If the graph isn't in the cache, the chart is created, drawn and then pushed to the cache using the
WriteToCache function. Calling this function
is mandatory for the cache to be available the next time an user will request the same chart.
|
|
Running this script will send the picture directly to the user browser. Don't run it in from command line! |
|
Source code :
<?php
// Standard inclusions
include("pChart/pData.class");
include("pChart/pChart.class");
include("pChart/pCache.class");
// Dataset definition
$DataSet = new pData;
$DataSet->AddPoint(array(1,4,3,2,3,3,2,1,0,7,4,3,2,3,3,5,1,0,7),"Serie1");
$DataSet->AddPoint(array(1,4,2,6,2,3,0,1,5,1,2,4,5,2,1,0,6,4,2),"Serie2");
$DataSet->AddAllSeries();
$DataSet->SetAbsciseLabelSerie();
$DataSet->SetSerieName("January","Serie1");
$DataSet->SetSerieName("February","Serie2");
// Cache definition
$Cache = new pCache();
$Cache->GetFromCache("Graph1",$DataSet->GetData());
// Initialise the graph
$Test = new pChart(700,230);
$Test->setFontProperties("Fonts/tahoma.ttf",8);
$Test->setGraphArea(50,30,585,200);
$Test->drawFilledRoundedRectangle(7,7,693,223,5,240,240,240);
$Test->drawRoundedRectangle(5,5,695,225,5,230,230,230);
$Test->drawGraphArea(255,255,255,TRUE);
$Test->drawScale($DataSet->GetData(),$DataSet->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2);
$Test->drawGrid(4,TRUE,230,230,230,50);
// Draw the 0 line
$Test->setFontProperties("Fonts/tahoma.ttf",6);
$Test->drawTreshold(0,143,55,72,TRUE,TRUE);
// Draw the cubic curve graph
$Test->drawCubicCurve($DataSet->GetData(),$DataSet->GetDataDescription());
// Finish the graph
$Test->setFontProperties("Fonts/tahoma.ttf",8);
$Test->drawLegend(600,30,$DataSet->GetDataDescription(),255,255,255);
$Test->setFontProperties("Fonts/tahoma.ttf",10);
$Test->drawTitle(50,22,"Example 1",50,50,50,585);
// Render the graph
$Cache->WriteToCache("Graph1",$DataSet->GetData(),$Test);
$Test->Stroke();
?>
|
|
Using the cache work only for graphs that are sent to the user browser using the Stroke() command. |
|
|
Last updated on 06/19/2008 |