use Bitrix\Main\Loader;
define("ADMIN_MODULE_NAME", "perfmon");
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
/** @global CMain $APPLICATION */
/** @global CDatabase $DB */
/** @global CUser $USER */
Loader::includeModule('perfmon');
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/perfmon/prolog.php");
IncludeModuleLangFile(__FILE__);
$RIGHT = $APPLICATION->GetGroupRight("perfmon");
if ($RIGHT == "D")
$APPLICATION->AuthForm(GetMessage("ACCESS_DENIED"));
$data = array(
"tuning" => array(
"NAME" => GetMessage("PERFMON_PHP_TUNING_NAME"),
"TITLE" => GetMessage("PERFMON_PHP_TUNING_TITLE"),
"HEADERS" => array(
array(
"id" => "PARAMETER",
"content" => GetMessage("PERFMON_PHP_TUNING_PARAMETER"),
"default" => true,
),
array(
"id" => "VALUE",
"content" => GetMessage("PERFMON_PHP_TUNING_VALUE"),
"align" => "right",
"default" => true,
),
array(
"id" => "RECOMMENDATION",
"content" => GetMessage("PERFMON_PHP_TUNING_RECOMMENDATION"),
"default" => true,
),
),
"ITEMS" => array(),
),
);
$php_version = phpversion();
$is_ok = version_compare($php_version, "5.3.0", ">=");
$data["tuning"]["ITEMS"][] = array(
"PARAMETER" => GetMessage("PERFMON_PHP_VERSION"),
"IS_OK" => $is_ok,
"VALUE" => (
$is_ok?
$php_version:
"".$php_version.""
),
"RECOMMENDATION" => GetMessage("PERFMON_PHP_VERSION_REC", array("#value#" => "5.3.0")),
);
$open_basedir = ini_get('open_basedir');
$is_ok = $open_basedir == '';
$data["tuning"]["ITEMS"][] = array(
"PARAMETER" => "open_basedir",
"IS_OK" => $is_ok,
"VALUE" => " ".$open_basedir,
"RECOMMENDATION" => GetMessage("PERFMON_PHP_OPEN_BASEDIR_REC"),
);
if (version_compare($php_version, "5.1.0", ">="))
{
$size = CPerfAccel::unformat(ini_get('realpath_cache_size'));
$is_ok = ($size >= 4 * 1024 * 1024);
$data["tuning"]["ITEMS"][] = array(
"PARAMETER" => "realpath_cache_size",
"IS_OK" => $is_ok,
"VALUE" => ini_get('realpath_cache_size'),
"RECOMMENDATION" => GetMessage("PERFMON_PHP_PATH_CACHE_REC2"),
);
}
$arKnownAccels = array(
'apc' => 'APC',
'xcache' => 'XCache',
'zend_accelerator' => 'Zend Accelerator',
'wincache' => 'Windows Cache Extension for PHP',
'zendopcache' => 'ZendOpcache',
);
$allAccelerators = CPerfomanceMeasure::GetAllAccelerators();
if (!$allAccelerators)
{
$data["tuning"]["ITEMS"][] = array(
"PARAMETER" => GetMessage("PERFMON_PHP_PRECOMPILER"),
"IS_OK" => false,
"VALUE" => GetMessage("PERFMON_PHP_PRECOMPILER_NOT_INSTALLED"),
"RECOMMENDATION" => GetMessage("PERFMON_PHP_PRECOMPILER_REC")."
".implode("
", $arKnownAccels),
);
}
else
{
$workingAccel = null;
foreach ($allAccelerators as $accel)
{
if ($accel->IsWorking())
{
$workingAccel = $accel;
$arRecommendations = $accel->GetRecommendations();
foreach ($arRecommendations as $i => $ar)
$data["tuning"]["ITEMS"][] = $ar;
break;
}
}
if ($workingAccel === null)
{
foreach ($allAccelerators as $accel)
{
$arRecommendations = $accel->GetRecommendations();
foreach ($arRecommendations as $i => $ar)
$data["tuning"]["ITEMS"][] = $ar;
}
}
}
$sTableID = "tbl_perfmon_panel";
$APPLICATION->SetTitle(GetMessage("PERFMON_PHP_TITLE"));
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
foreach ($data as $i => $arTable)
{
$lAdmin = new CAdminList($sTableID.$i);
$lAdmin->BeginPrologContent();
if (array_key_exists("TITLE", $arTable))
echo "