/usr/share/php/Horde/Kolab/Format/Decorator/Memory.php is in php-horde-kolab-format 2.0.9-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | <?php
/**
* Determines some memory parameters while loading/saving the Kolab objects.
*
* PHP version 5
*
* @category Kolab
* @package Kolab_Format
* @author Gunnar Wrobel <wrobel@pardus.de>
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @link http://www.horde.org/libraries/Horde_Kolab_Format
*/
/**
* Determines some memory parameters while loading/saving the Kolab objects.
*
* Copyright 2011-2016 Horde LLC (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (LGPL). If you did not
* receive this file, see
* http://www.horde.org/licenses/lgpl21.
*
* @category Kolab
* @package Kolab_Format
* @author Gunnar Wrobel <wrobel@pardus.de>
* @license http://www.horde.org/licenses/lgpl21 LGPL 2.1
* @link http://www.horde.org/libraries/Horde_Kolab_Format
*/
class Horde_Kolab_Format_Decorator_Memory
extends Horde_Kolab_Format_Decorator_Base
{
/**
* The memory tracker used for recording the memory parameters.
*
* @var Horde_Support_Memory
*/
private $_memory;
/**
* An optional logger.
*
* @var mixed
*/
private $_logger;
/**
* Constructor.
*
* @param Horde_Kolab_Format $handler The handler to be decorated.
* @param Horde_Support_Memory $memory The memory tracker.
* @param mixed $logger The logger. This must provide
* a debug() method.
*/
public function __construct(Horde_Kolab_Format $handler,
Horde_Support_Memory $memory,
$logger = null)
{
parent::__construct($handler);
$this->_memory = $memory;
$this->_logger = $logger;
}
/**
* Load an object based on the given XML stream.
*
* @param resource $xml The XML stream of the message.
* @param array $options Additional options when parsing the XML. This
* decorator provides no additional options.
*
* @return array The data array representing the object.
*
* @throws Horde_Kolab_Format_Exception
*/
public function load($xml, $options = array())
{
$this->_memory->push();
$result = $this->getHandler()->load($xml);
$this->_logger->debug(
sprintf(
'Kolab Format data parsing complete. Memory usage: %s',
$this->_formatUsage($this->_memory->pop())
)
);
return $result;
}
/**
* Convert the data to a XML stream.
*
* @param array $object The data array representing the object.
* @param array $options Additional options when writing the XML. This
* decorator provides no additional options.
*
* @return resource The data as XML stream.
*
* @throws Horde_Kolab_Format_Exception
*/
public function save($object, $options = array())
{
$this->_memory->push();
$result = $this->getHandler()->save($object);
$this->_logger->debug(
sprintf(
'Kolab Format data generation complete. Memory usage: %s',
$this->_formatUsage($this->_memory->pop())
)
);
return $result;
}
/**
* Format the memory usage information.
*
* @param array $usage The memory usage.
*
* @return string The formated memory usage.
*/
private function _formatUsage($usage)
{
return sprintf(
'%.3f MB / %.3f MB / %.3f MB / %.3f MB [change in current usage (emalloc) / change in peak usage (emalloc) / change in current usage (real) / change in peak usage (real)]',
$usage[0] / 1048576,
$usage[1] / 1048576,
$usage[2] / 1048576,
$usage[3] / 1048576
);
}
}
|