Beispiel #1
0
{
    // pm is shortcut for ProcessMonitor::dump()
    pm('some debug msg');
    usleep($fileInfo['time'] * 1000000 / 3);
    consumeMemory($fileInfo['size'] / 10, $memoryLeakData);
}
// end of fake demo specific code
// processMonitor extends Tracy\Debugger and mostly respects it's configuration
// therefore configure Debugger first
Debugger::detectDebugMode();
Debugger::enable();
Debugger::$maxDepth = 1;
// initialize ProcessMonitor
ProcessMonitor::$reportMode = ProcessMonitor::SHOW_DETAIL;
// ProcessMonitor::start is intended to be run only once
ProcessMonitor::start('some API import (this is only fake demo)');
$count = 0;
// this is how typical processing loop looks like
foreach ($filesList as $fileInfo) {
    // while debugging scripts which repeat some actions multiple times
    // reset process monitor timers in each loop
    pmr('some api call to import ' . $fileInfo['name']);
    // 1. step some api call
    runApiCallToGetXMLFile($fileInfo, $memoryLeakData);
    // pms is shortcut for ProcessMonitor::addSummary()
    // when processing can be split in several steps as in this case
    // it is very useful to track time and memory usage for each step separately
    // track api call time + download response time
    pms("get file {$fileInfo['name']} xml: " . ProcessMonitor::formatSize($fileInfo['size'] * 1000, ProcessMonitor::SIZE_AUTO) . " <a href='/examples/processMonitor.php?file={$fileInfo['name']}'>Run again &gt;&gt; </a>" . " <br/> see imported xml: <a href='/some_url/{$fileInfo['name']}' target='_blank'>" . $fileInfo['name'] . "</a>", null, 'time_api_call');
    // 2. step - parsing xml response
    parseXMLFile($fileInfo, $memoryLeakData);