/** * Tries to free the given amount of memory * * @param int $size Memory to free in bytes * @return bool Returns if the memory could be freed */ public function freeMemory($size) { $currentMemory = memory_get_usage(TRUE); $freedMemory = 0; $databases = Manager::getIdentifiersByTag(Coordinator::MEMORY_MANAGER_TAG, TRUE); foreach ($databases as $identifier) { Manager::free($identifier); $freedMemory += $currentMemory - memory_get_usage(TRUE); $currentMemory = memory_get_usage(TRUE); if ($freedMemory >= $size) { return TRUE; } // DebugUtility::var_dump(gc_enabled(), array_keys(get_defined_vars()), GeneralUtility::formatBytes($currentMemory), GeneralUtility::formatBytes($freedMemory)); } // DebugUtility::var_dump(gc_enabled(), array_keys(get_defined_vars()), GeneralUtility::formatBytes($currentMemory), GeneralUtility::formatBytes($freedMemory)); return FALSE; }
/** * Returns an array of the identifiers of available databases * * @return array */ public function listDatabases() { $persistedDatabases = $this->listPersistedDatabases(); $persistedDatabases = array_combine($persistedDatabases, $persistedDatabases); $inMemoryDatabases = Manager::getIdentifiersByTag(self::MEMORY_MANAGER_TAG, TRUE); $inMemoryDatabases = array_combine($inMemoryDatabases, $inMemoryDatabases); $allDatabases = array_merge($persistedDatabases, $inMemoryDatabases); return array_keys($allDatabases); }
/** * @test */ public function getIdentifierNotExistsGraceful() { $this->assertEmpty(Manager::getIdentifiersByTag('tag' . time(), TRUE)); }