%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/serverinfo/lib/ |
Current File : //www/varak.net/nextcloud.varak.net/apps_old/apps/serverinfo/lib/PhpStatistics.php |
<?php declare(strict_types=1); /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace OCA\ServerInfo; use bantu\IniGetWrapper\IniGetWrapper; /** * Class php * * @package OCA\Survey_Client\Categories */ class PhpStatistics { protected IniGetWrapper $phpIni; public function __construct(IniGetWrapper $phpIni) { $this->phpIni = $phpIni; } public function getPhpStatistics(): array { return [ 'version' => PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION, 'memory_limit' => $this->phpIni->getBytes('memory_limit'), 'max_execution_time' => $this->phpIni->getNumeric('max_execution_time'), 'upload_max_filesize' => $this->phpIni->getBytes('upload_max_filesize'), 'opcache_revalidate_freq' => $this->phpIni->getNumeric('opcache.revalidate_freq'), // NOTE: If access to add'l OPcache *config* parameters is desired consider // implementing a getOPcacheConfig() wrapper for PHP's opcache_get_configuration() // like we do for PHP's opcache_get_status() already below 'opcache' => $this->getOPcacheStatus(), 'apcu' => $this->getAPCuStatus(), 'extensions' => $this->getLoadedPhpExtensions(), ]; } /** * Get status information about the cache from the OPcache extension * * @return array with an array of state information about the cache instance */ protected function getOPcacheStatus(): array { // Test if the OPcache module is installed if (!extension_loaded('Zend OPcache')) { // module not loaded, returning back empty array to prevent any errors on JS side. return []; } // get status information about the cache $status = (function_exists('opcache_get_status')) ? opcache_get_status(false) : false; if ($status === false) { // no array, returning back empty array to prevent any errors on JS side. $status = []; } return $status; } /** * Get status information about the cache from the APCu extension * * @return array with an array of state information about the cache instance */ protected function getAPCuStatus(): array { // Test if the APCu module is installed if (!extension_loaded('apcu')) { // module not loaded, returning back empty array to prevent any errors on JS side. return []; } // get cached information from APCu data store $cacheInfo = apcu_cache_info(true); // get APCu Shared Memory Allocation information $smaInfo = apcu_sma_info(true); if ($cacheInfo === false) { // no array, returning back N/A to prevent any errors on JS side. $cacheInfo = 'N/A'; } if ($smaInfo === false) { // no array, returning back N/A to prevent any errors on JS side. $smaInfo = 'N/A'; } // return the array return [ 'cache' => $cacheInfo, 'sma' => $smaInfo, ]; } /** * Get all loaded php extensions * * @return array of strings with the names of the loaded extensions */ protected function getLoadedPhpExtensions(): ?array { return (function_exists('get_loaded_extensions') ? get_loaded_extensions() : null); } }