logger = $logger; $this->label = "🧪 " . "OPcache"; } /** * @return DiagnosticResult[] */ public function execute() { $result = new DiagnosticResult($this->label); if (!Utils::booleanIni("opcache.enable")) { $result->addItem(new DiagnosticResultItem( DiagnosticResult::STATUS_WARNING, Piwik::translate("DiagnosticsExtended_OpcacheCheckOpcacheDisabled") )); return [$result]; } else { $status = @opcache_get_status(); $memoryUsage = $status["memory_usage"]; $interned = $status["interned_strings_usage"]; $statistics = $status["opcache_statistics"]; $result->addItem(new DiagnosticResultItem( DiagnosticResult::STATUS_OK, Piwik::translate("DiagnosticsExtended_OpcacheCheckOpcacheEnabled", [ round($memoryUsage["used_memory"] / self::MEGABYTE), round(($memoryUsage["used_memory"] + $memoryUsage["free_memory"]) / self::MEGABYTE), round($memoryUsage["current_wasted_percentage"] * 100, 2), round($interned["used_memory"] / self::MEGABYTE), round($interned["buffer_size"] / self::MEGABYTE), round($statistics["opcache_hit_rate"]) ]) )); } if (!Utils::booleanIni("opcache.save_comments")) { $result->addItem(new DiagnosticResultItem( DiagnosticResult::STATUS_ERROR, Piwik::translate("DiagnosticsExtended_OpcacheCheckSaveComments") )); } $minimum_files = 7963; if (Utils::intIni("opcache.max_accelerated_files") <= $minimum_files) { $result->addItem(new DiagnosticResultItem( DiagnosticResult::STATUS_WARNING, Piwik::translate("DiagnosticsExtended_OpcacheCheckMaxFiles", [$minimum_files]) )); } if (Utils::intIni("opcache.memory_consumption") < 128) { $result->addItem(new DiagnosticResultItem( DiagnosticResult::STATUS_WARNING, Piwik::translate("DiagnosticsExtended_OpcacheCheckMemory") )); } if (Utils::intIni("opcache.interned_strings_buffer") < 8) { $result->addItem(new DiagnosticResultItem( DiagnosticResult::STATUS_WARNING, Piwik::translate("DiagnosticsExtended_OpcacheCheckInternedStrings") )); } if (!Utils::intIni("opcache.validate_timestamps")) { $result->addItem(new DiagnosticResultItem( DiagnosticResult::STATUS_INFORMATIONAL, Piwik::translate("DiagnosticsExtended_OpcacheCheckValidateTimestamps") )); } $jit = ini_get("opcache.jit"); if (PHP_MAJOR_VERSION >= 8 && (!$jit || $jit == "0" || $jit == "off")) { $result->addItem(new DiagnosticResultItem( DiagnosticResult::STATUS_INFORMATIONAL, Piwik::translate("DiagnosticsExtended_OpcacheCheckJIT") )); } return [$result]; } }