Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php /** * Copyright Magento, Inc. All rights reserved. * See COPYING.txt for license ..
Decoded Output download
<?php
/**
* Copyright Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\ApplicationPerformanceMonitor\Profiler\Output;
use Magento\ApplicationPerformanceMonitor\Profiler\Metric;
use Magento\ApplicationPerformanceMonitor\Profiler\MetricType;
use Magento\ApplicationPerformanceMonitor\Profiler\OutputInterface;
use Magento\Framework\App\DeploymentConfig;
use Psr\Log\LoggerInterface;
/**
* Outputs the performance metrics and other information to Logger
*/
class LoggerOutput implements OutputInterface
{
public const CONFIG_ENABLE_KEY = 'application/performance_monitor/logger_output_enable';
public const CONFIG_VERBOSE_KEY = 'application/performance_monitor/logger_output_verbose';
/**
* @param LoggerInterface $logger
* @param DeploymentConfig $deploymentConfig
*/
public function __construct(
private readonly LoggerInterface $logger,
private readonly DeploymentConfig $deploymentConfig,
) {
}
/**
* @inheritDoc
*/
public function isEnabled(): bool
{
return match ($this->deploymentConfig->get(static::CONFIG_ENABLE_KEY)) {
1, "1", "true", true => true,
default => false,
};
}
/**
* @inheritDoc
*/
public function doOutput(array $metrics, array $information) : void
{
if (!$this->isEnabled()) {
return;
}
if (!empty($information['subject'])) {
$subject = __('Profile information for %1', $information['subject']);
unset($information['subject']);
} else {
$subject = __('Profile information');
}
if (!empty($information['requestContentLength'])) {
$information['requestContentLength'] = $this->prettyMemorySize($information['requestContentLength']);
}
$verbose = $this->isVerbose();
$prettyMetrics = $this->doOutputMetrics($metrics, $verbose);
$message = sprintf("\"%s\": {
", $subject);
foreach ($information as $key => $value) {
$message .= sprintf(" \"%s\": \"%s\",
", (string)$key, (string)$value);
}
foreach ($prettyMetrics as $key => $value) {
$message .= sprintf(" \"%s\": \"%s\",
", (string)$key, (string)$value);
}
$message =
trim($message, ",
");
$message .= sprintf("
}
");
$this->logger->debug($message);
}
/**
* Make the metrics pretty and checks verbosity
*
* @param array $metrics
* @param bool $verbose
* @return array
*/
private function doOutputMetrics(array $metrics, bool $verbose)
{
$prettyMetrics = [];
/** @var Metric $metric */
foreach ($metrics as $metric) {
if (!$verbose && $metric->isVerbose()) {
continue;
}
switch ($metric->getType()) {
case MetricType::SECONDS_ELAPSED_FLOAT:
$prettyMetrics[$metric->getName()] = $this->prettyElapsedTime($metric->getValue());
break;
case MetricType::UNIX_TIMESTAMP_FLOAT:
$prettyMetrics[$metric->getName()] = $this->prettyUnixTime($metric->getValue());
break;
case MetricType::MEMORY_SIZE_INT:
$prettyMetrics[$metric->getName()] = $this->prettyMemorySize($metric->getValue());
break;
default:
$prettyMetrics[$metric->getName()] = $metric->getValue();
break;
}
}
return $prettyMetrics;
}
/**
* Returns a string format of memory with units.
*
* @param int $size
* @return string
*/
private function prettyMemorySize(int $size): string
{
if (!$this->isVerbose()) {
$absSize = abs($size);
if ($absSize > 1000000000) {
return sprintf("%.3g GB", $size / 1000000000.0);
}
if ($absSize > 1000000) {
return sprintf("%.3g MB", $size / 1000000.0);
}
if ($absSize > 1000) {
return sprintf("%.3g KB", $size / 1000.0);
}
}
return ((string)($size)) . ' B';
}
/**
* Returns a string format of elapsed time with units.
*
* @param string $time
* @return string
*/
private function prettyElapsedTime(float $time): string
{
if ($this->isVerbose()) {
return ((string)($time)) . ' s';
}
$time = (int) $time;
if ($time > 60) {
return sprintf("%.3g m", $time / 60.0);
}
return ((string)($time)) . ' s';
}
/**
* Returns a string format of unix time with units.
*
* @param string $time
* @return string
*/
private function prettyUnixTime(float $time): string
{
$timeAsString = sprintf("%.1f", $time);
return \DateTime::createFromFormat('U.u', $timeAsString)->format('Y-m-d\TH:i:s.u');
}
/**
* Returns true when verbose is enabled in configuration.
*
* @return bool
*/
private function isVerbose(): bool
{
return match ($this->deploymentConfig->get(static::CONFIG_VERBOSE_KEY)) {
1, "1", "true", true => true,
default => false,
};
}
}
?>
Did this file decode correctly?
Original Code
<?php
/**
* Copyright Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\ApplicationPerformanceMonitor\Profiler\Output;
use Magento\ApplicationPerformanceMonitor\Profiler\Metric;
use Magento\ApplicationPerformanceMonitor\Profiler\MetricType;
use Magento\ApplicationPerformanceMonitor\Profiler\OutputInterface;
use Magento\Framework\App\DeploymentConfig;
use Psr\Log\LoggerInterface;
/**
* Outputs the performance metrics and other information to Logger
*/
class LoggerOutput implements OutputInterface
{
public const CONFIG_ENABLE_KEY = 'application/performance_monitor/logger_output_enable';
public const CONFIG_VERBOSE_KEY = 'application/performance_monitor/logger_output_verbose';
/**
* @param LoggerInterface $logger
* @param DeploymentConfig $deploymentConfig
*/
public function __construct(
private readonly LoggerInterface $logger,
private readonly DeploymentConfig $deploymentConfig,
) {
}
/**
* @inheritDoc
*/
public function isEnabled(): bool
{
return match ($this->deploymentConfig->get(static::CONFIG_ENABLE_KEY)) {
1, "1", "true", true => true,
default => false,
};
}
/**
* @inheritDoc
*/
public function doOutput(array $metrics, array $information) : void
{
if (!$this->isEnabled()) {
return;
}
if (!empty($information['subject'])) {
$subject = __('Profile information for %1', $information['subject']);
unset($information['subject']);
} else {
$subject = __('Profile information');
}
if (!empty($information['requestContentLength'])) {
$information['requestContentLength'] = $this->prettyMemorySize($information['requestContentLength']);
}
$verbose = $this->isVerbose();
$prettyMetrics = $this->doOutputMetrics($metrics, $verbose);
$message = sprintf("\"%s\": {\n", $subject);
foreach ($information as $key => $value) {
$message .= sprintf("\t\"%s\":\t\"%s\",\n", (string)$key, (string)$value);
}
foreach ($prettyMetrics as $key => $value) {
$message .= sprintf("\t\"%s\":\t\"%s\",\n", (string)$key, (string)$value);
}
$message = \rtrim($message, ",\n");
$message .= sprintf("\n}\n");
$this->logger->debug($message);
}
/**
* Make the metrics pretty and checks verbosity
*
* @param array $metrics
* @param bool $verbose
* @return array
*/
private function doOutputMetrics(array $metrics, bool $verbose)
{
$prettyMetrics = [];
/** @var Metric $metric */
foreach ($metrics as $metric) {
if (!$verbose && $metric->isVerbose()) {
continue;
}
switch ($metric->getType()) {
case MetricType::SECONDS_ELAPSED_FLOAT:
$prettyMetrics[$metric->getName()] = $this->prettyElapsedTime($metric->getValue());
break;
case MetricType::UNIX_TIMESTAMP_FLOAT:
$prettyMetrics[$metric->getName()] = $this->prettyUnixTime($metric->getValue());
break;
case MetricType::MEMORY_SIZE_INT:
$prettyMetrics[$metric->getName()] = $this->prettyMemorySize($metric->getValue());
break;
default:
$prettyMetrics[$metric->getName()] = $metric->getValue();
break;
}
}
return $prettyMetrics;
}
/**
* Returns a string format of memory with units.
*
* @param int $size
* @return string
*/
private function prettyMemorySize(int $size): string
{
if (!$this->isVerbose()) {
$absSize = abs($size);
if ($absSize > 1000000000) {
return sprintf("%.3g GB", $size / 1000000000.0);
}
if ($absSize > 1000000) {
return sprintf("%.3g MB", $size / 1000000.0);
}
if ($absSize > 1000) {
return sprintf("%.3g KB", $size / 1000.0);
}
}
return ((string)($size)) . ' B';
}
/**
* Returns a string format of elapsed time with units.
*
* @param string $time
* @return string
*/
private function prettyElapsedTime(float $time): string
{
if ($this->isVerbose()) {
return ((string)($time)) . ' s';
}
$time = (int) $time;
if ($time > 60) {
return sprintf("%.3g m", $time / 60.0);
}
return ((string)($time)) . ' s';
}
/**
* Returns a string format of unix time with units.
*
* @param string $time
* @return string
*/
private function prettyUnixTime(float $time): string
{
$timeAsString = sprintf("%.1f", $time);
return \DateTime::createFromFormat('U.u', $timeAsString)->format('Y-m-d\TH:i:s.u');
}
/**
* Returns true when verbose is enabled in configuration.
*
* @return bool
*/
private function isVerbose(): bool
{
return match ($this->deploymentConfig->get(static::CONFIG_VERBOSE_KEY)) {
1, "1", "true", true => true,
default => false,
};
}
}
Function Calls
| None |
Stats
| MD5 | 57c59d1e97b92908e2e821e271a397d9 |
| Eval Count | 0 |
| Decode Time | 130 ms |