# Data arrays for 2 frames, text-data. $data1 = array(array('', 1, 2, 3), array('', 2, 4, 6), array('', 3, 6, 9)); $data2 = array(array('', 2, 4, 6), array('', 3, 6, 9), array('', 4, 8, 6)); # Check the overall structure of a frame. Return True if OK, else False. # Frame needs: boundary, content type and content length, then the image. # This does nothing with the image (there is another test for that). function check_frame($frame, $boundary) { global $mime_type; return preg_match("--{$boundary}\\s", $frame) && preg_match("Content-Type: {$mime_type}\\si", $frame) && preg_match("Content-Length: (\\d*)\\si", $frame); } # Initial plot object setup: $plot = new PHPlot_pv(640, 480); $plot->SetDataType('text-data'); $plot->SetPlotType('lines'); $plot->SetFileFormat('jpg'); $plot->SetXTickLabelPos('none'); $plot->SetXTickPos('none'); $plot->SetXDataLabelPos('none'); $plot->SetPlotAreaWorld(NULL, 0, NULL, 10); $plot->SetPrintImage(False); # StartStream does no output, only headers (which we cannot catch using the # CLI), so just check the variables it sets: $plot->StartStream(); $boundary = $plot->GET_stream_boundary(); # Check: Stream frame header includes content-type with expected MIME type $sfh = $plot->GET_stream_frame_header(); if (!preg_match("Content-Type: {$mime_type}", $sfh)) { fwrite(STDERR, "Error: Did not match Content type in header:\n{$sfh}\n"); $errors++; }