%PDF- %PDF-
Direktori : /www/varak.net/mail2.varak.net_old/libraries/MailSo/Base/ |
Current File : /www/varak.net/mail2.varak.net_old/libraries/MailSo/Base/ResourceRegistry.php |
<?php /* * Copyright 2004-2014, AfterLogic Corp. * Licensed under AGPLv3 license or AfterLogic license * if commercial version of the product was purchased. * See the LICENSE file for a full license statement. */ namespace MailSo\Base; /** * @category MailSo * @package Base */ class ResourceRegistry { /** * @var array */ public static $Resources = array(); /** * @access private */ private function __construct() { } /** * @staticvar bool $bInited * * @return void */ private static function regResourcesShutdownFunc() { static $bInited = false; if (!$bInited) { $bInited = true; \register_shutdown_function(function () { if (\is_array(\MailSo\Base\ResourceRegistry::$Resources)) { foreach (\array_keys(\MailSo\Base\ResourceRegistry::$Resources) as $sKey) { if (\is_resource(\MailSo\Base\ResourceRegistry::$Resources[$sKey])) { \MailSo\Base\Loader::IncStatistic('CloseMemoryResource'); \fclose(\MailSo\Base\ResourceRegistry::$Resources[$sKey]); } \MailSo\Base\ResourceRegistry::$Resources[$sKey] = null; } } \MailSo\Base\ResourceRegistry::$Resources = array(); }); } } /** * @param int $iMemoryMaxInMb = 5 * * @return resource | bool */ public static function CreateMemoryResource($iMemoryMaxInMb = 5) { self::regResourcesShutdownFunc(); $oResult = @\fopen('php://temp/maxmemory:'.($iMemoryMaxInMb * 1024 * 1024), 'r+b'); if (\is_resource($oResult)) { \MailSo\Base\Loader::IncStatistic('CreateMemoryResource'); \MailSo\Base\ResourceRegistry::$Resources[(string) $oResult] = $oResult; return $oResult; } return false; } /** * @param string $sString * * @return resource | bool */ public static function CreateMemoryResourceFromString($sString) { $oResult = self::CreateMemoryResource(); if (\is_resource($oResult)) { \fwrite($oResult, $sString); \rewind($oResult); } return $oResult; } /** * @param resource $rResource * * @return void */ public static function CloseMemoryResource(&$rResource) { if (\is_resource($rResource)) { $sKey = (string) $rResource; if (isset(\MailSo\Base\ResourceRegistry::$Resources[$sKey])) { \fclose(\MailSo\Base\ResourceRegistry::$Resources[$sKey]); \MailSo\Base\ResourceRegistry::$Resources[$sKey] = null; unset(\MailSo\Base\ResourceRegistry::$Resources[$sKey]); \MailSo\Base\Loader::IncStatistic('CloseMemoryResource'); } if (\is_resource($rResource)) { \fclose($rResource); } $rResource = null; } } }