1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
debug_info.php
См. документацию.
1<?php
2
6
8
9if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)
10{
11 die();
12}
13
14IncludeModuleLangFile(__FILE__);
15
16// ************************************************************************
17// $main_exec_time, $bShowTime, $bShowStat MUST be defined before include
18// ************************************************************************
19
25
28$sqlTracker = $application->getConnection()->getTracker();
29
30echo CJSCore::Init('admin_interface', true);
31
32?><style>
33div.bx-debug-content-table tr.heading td {background-color:#E1EEDA;}
34div.bx-debug-content-table tr.heading-sort td {white-space:nowrap; border-bottom:solid 1px #dce7ed; cursor:pointer;}
35div.bx-debug-content-table tr.cache-row {vertical-align:top;}
36div.bx-debug-content-table tr.cache-row td {white-space:nowrap;}
37div.bx-debug-content-table tr.heading-bottom td {padding:3px 3px 9px 3px !important;}
38div.bx-debug-content-table td {padding-right:4px !important; padding-bottom:4px !important;}
39div.bx-debug-content-table td.number {padding-right:4px !important; padding-bottom:4px !important; text-align:right !important; white-space:nowrap !important}
40div.bx-debug-content-top {padding:12px; position:relative; top:0; left:0; height:120px; overflow:auto; border-bottom:1px solid #D0D0D0;}
41</style><?
42
43if ($bShowTime || $bShowStat || $bShowCacheStat)
44{
45 ?><div class="bx-component-debug bx-debug-summary"><?
46}
47
48$bShowExtTime = $bShowTime && !defined("ADMIN_SECTION") && $bShowStat;
49$DOCUMENT_ROOT_LEN = mb_strlen($_SERVER["DOCUMENT_ROOT"]);
50
52{
53 $CURRENT_TIME = microtime(true);
54
55 $PROLOG_BEFORE_1 = START_EXEC_PROLOG_BEFORE_1;
56 $PROLOG_BEFORE_2 = defined('START_EXEC_PROLOG_BEFORE_2') ? START_EXEC_PROLOG_BEFORE_2 : START_EXEC_PROLOG_BEFORE_1;
57 $PROLOG_BEFORE = $PROLOG_BEFORE_2 - $PROLOG_BEFORE_1;
58
59 $PROLOG_AFTER = 0;
60 $PROLOG_AFTER_2 = $PROLOG_BEFORE_2;
61 if (defined('START_EXEC_PROLOG_AFTER_2') && defined('START_EXEC_PROLOG_AFTER_1'))
62 {
63 $PROLOG_AFTER_2 = START_EXEC_PROLOG_AFTER_2;
64 $PROLOG_AFTER_1 = START_EXEC_PROLOG_AFTER_1;
65 $PROLOG_AFTER = $PROLOG_AFTER_2 - $PROLOG_AFTER_1;
66 }
67
68 $PROLOG = $PROLOG_BEFORE + $PROLOG_AFTER;
69
70 $EPILOG_BEFORE = 0;
71 $EPILOG_AFTER = 0;
72 $EPILOG = 0;
73 if (defined("START_EXEC_EPILOG_BEFORE_1"))
74 {
75 $EPILOG_BEFORE_1 = START_EXEC_EPILOG_BEFORE_1;
76 $WORK_AREA = $EPILOG_BEFORE_1 - $PROLOG_AFTER_2;
77
78 if (defined("START_EXEC_EPILOG_AFTER_1"))
79 {
80 $EPILOG_AFTER_1 = START_EXEC_EPILOG_AFTER_1;
81 $EPILOG_BEFORE = $EPILOG_AFTER_1 - $EPILOG_BEFORE_1;
82 $EPILOG_AFTER = $CURRENT_TIME - $EPILOG_AFTER_1;
83 }
84
85 $EPILOG = $CURRENT_TIME - $EPILOG_BEFORE_1;
86 }
87 else
88 {
89 $WORK_AREA = $CURRENT_TIME - $PROLOG_AFTER_2;
90 }
91
92 $PAGE = $CURRENT_TIME - $PROLOG_BEFORE_1;
93
94 $arAreas = [
95 "PAGE" => ["FLT" => ["PB", "PA", "WA", "EB", "EV", "EA"], "TIME" => $PAGE],
96 "PROLOG" => ["FLT" => ["PB", "PA"], "TIME" => $PROLOG],
97 "PROLOG_BEFORE" => ["FLT" => ["PB"], "TIME" => $PROLOG_BEFORE],
98 "PROLOG_AFTER" => ["FLT" => ["PA"], "TIME" => $PROLOG_AFTER],
99 "WORK_AREA" => ["FLT" => ["WA"], "TIME" => $WORK_AREA],
100 "EPILOG" => ["FLT" => ["EB", "EV", "EA"], "TIME" => $EPILOG],
101 "EPILOG_BEFORE" => ["FLT" => ["EB"], "TIME" => $EPILOG_BEFORE],
102 "EPILOG_AFTER" => ["FLT" => ["EV", "EA"], "TIME" => $EPILOG_AFTER],
103 ];
104
105 $j = 1;
106 foreach ($arAreas as $i => $arArea)
107 {
108 $arAreas[$i]["NUM"] = $j;
109 $j++;
110
111 $arAreas[$i]["TRACE"] = array(
112 "PATH" => $APPLICATION->GetCurPage(),
113 "QUERY_COUNT" => 0,
114 "QUERY_TIME" => 0.0,
115 "QUERIES" => array(),
116 "TIME" => $arArea["TIME"],
117 "COMPONENT_COUNT" => 0,
118 "COMPONENT_TIME" => 0.0,
119 "COMP_QUERY_COUNT" => 0,
120 "COMP_QUERY_TIME" => 0.0,
121 "CACHE_SIZE" => 0,
122 );
123 }
124
125 $state = "PB";
126 foreach ($sqlTracker->getQueries() as $arQueryDebug)
127 {
128 if ($arQueryDebug["BX_STATE"] <> '')
129 {
130 $state = $arQueryDebug["BX_STATE"];
131 }
132
133 foreach ($arAreas as $i => $arArea)
134 {
135 if (in_array($state, $arArea["FLT"]))
136 {
137 $arAreas[$i]["TRACE"]["QUERY_COUNT"]++;
138 $arAreas[$i]["TRACE"]["QUERY_TIME"]+=$arQueryDebug["TIME"];
139 //$arAreas[$i]["TRACE"]["QUERIES"][] = $arQueryDebug;
140 }
141 }
142 }
143
144 $state = "PA";
145 foreach ($APPLICATION->arIncludeDebug as $arIncludeDebug)
146 {
147 if ($arIncludeDebug["BX_STATE"] <> '')
148 {
149 $state = $arIncludeDebug["BX_STATE"];
150 }
151
152 foreach ($arAreas as $i => $arArea)
153 {
154 if (in_array($state, $arArea["FLT"]))
155 {
156 $arAreas[$i]["TRACE"]["TIME"] -= $arIncludeDebug["TIME"];
157 $arAreas[$i]["TRACE"]["COMPONENT_COUNT"]++;
158 $arAreas[$i]["TRACE"]["COMPONENT_TIME"] += $arIncludeDebug["TIME"];
159 $arAreas[$i]["TRACE"]["COMP_QUERY_COUNT"] += $arIncludeDebug["QUERY_COUNT"];
160 $arAreas[$i]["TRACE"]["COMP_QUERY_TIME"] += $arIncludeDebug["QUERY_TIME"];
161 $arAreas[$i]["TRACE"]["CACHE_SIZE"] += $arIncludeDebug["CACHE_SIZE"];
162 }
163 }
164 }
165
166 $bShowComps = !empty($APPLICATION->arIncludeDebug);
167
168 foreach ($arAreas as $i => $arArea)
169 {
170 $arAreas[$i]["IND"] = count($APPLICATION->arIncludeDebug);
171 $APPLICATION->arIncludeDebug[]=$arArea["TRACE"];
172 }
173
174 echo '<a href="javascript:jsDebugTimeWindow.Show(); jsDebugTimeWindow.ShowDetails(\'BX_DEBUG_TIME_1_1\')">'
175 . Loc::getMessage("debug_info_cr_time")
176 . '</a> <span id="bx_main_exec_time">' . round($PAGE, 4) . '</span> '
177 . Loc::getMessage("debug_info_sec") . '<br>';
178}
179elseif ($bShowTime)
180{
181 echo Loc::getMessage("debug_info_cr_time") . ' <span id="bx_main_exec_time">'
182 . round($main_exec_time, 4) . '</span> ' . Loc::getMessage("debug_info_sec") . '<br />';
183}
184
187
188if ($bShowStat || $bShowCacheStat)
189{
190 if ($bShowStat && $sqlTracker)
191 {
192 $totalQueryCount = $sqlTracker->getCounter();
193 $totalQueryTime = $sqlTracker->getTime();
194 foreach ($APPLICATION->arIncludeDebug as $i=>$arIncludeDebug)
195 {
196 if (array_key_exists("REL_PATH", $arIncludeDebug))
197 {
198 $totalQueryCount += $arIncludeDebug["QUERY_COUNT"];
199 $totalQueryTime += $arIncludeDebug["QUERY_TIME"];
200 }
201 }
202 echo '<a title="' . Loc::getMessage("debug_info_query_title") . '" href="javascript:BX_DEBUG_INFO_'
203 . count($APPLICATION->arIncludeDebug) . '.Show(); BX_DEBUG_INFO_' . count($APPLICATION->arIncludeDebug)
204 . '.ShowDetails(\'BX_DEBUG_INFO_' . count($APPLICATION->arIncludeDebug) . '_1\');">'
205 . Loc::getMessage("debug_info_total_queries") . "</a> " . intval($totalQueryCount) . "<br>";
206
207 echo Loc::getMessage("debug_info_total_time") . " " . round($totalQueryTime, 4)
208 . " " . Loc::getMessage("debug_info_sec") . "<br>";
209 }
210
211 if ($GLOBALS["CACHE_STAT_BYTES"] || $bShowCacheStat)
212 {
214 if (!empty($arCacheDebug))
215 {
216 echo '<a title="' . Loc::getMessage("debug_info_query_title")
217 . '" href="javascript:BX_DEBUG_INFO_CACHE.Show(); BX_DEBUG_INFO_CACHE.ShowDetails(\'BX_DEBUG_INFO_CACHE_m_0\');">'
218 . Loc::getMessage("debug_info_cache_size") . "</a> " . " ", CFile::FormatSize(\Bitrix\Main\Diag\CacheTracker::getCacheStatBytes(), 0)
219 . " (" . count($arCacheDebug) . ")<br>";
220 }
221 else
222 {
223 echo Loc::getMessage("debug_info_cache_size") . " ", CFile::FormatSize(\Bitrix\Main\Diag\CacheTracker::getCacheStatBytes(), 0) . "<br>";
224 }
225 }
226}
227
228if ($bShowTime || $bShowStat)
229{
230 echo '</div><div class="empty"></div>';
231}
232
233if ($bShowStat || $bShowCacheStat) //2
234{
235 $APPLICATION->arIncludeDebug[] = array(
236 "PATH" => $APPLICATION->GetCurPage(),
237 "QUERY_COUNT" => $totalQueryCount,
238 "QUERY_TIME" => round($totalQueryTime, 4),
239 "QUERIES" => $sqlTracker,
240 "TIME" => $main_exec_time,
241 );
242
243 //CJSPopup
244 require_once($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/interface/admin_lib.php");
245
247 if (!empty($arCacheDebug))
248 {
249 ?><script>
250 function sortTable(table_id, column_num, reverse)
251 {
252 var table = BX(table_id);
253 var title = table.rows[0].cells[column_num].innerHTML;
254 if (title.charCodeAt(0) == 8595)
255 reverse = true;
256 if (title.charCodeAt(0) == 8593)
257 reverse = false;
258
259 for (var i = 1; i < table.rows.length; i++)
260 {
261 for (var j = 1; j < table.rows.length; j++)
262 {
263 var a = table.rows[i].cells[column_num].getAttribute('sort')? table.rows[i].cells[column_num].getAttribute('sort'): table.rows[i].cells[column_num].innerHTML;
264 var ai = parseInt(a);
265 if (ai > 0) a = ai;
266 var b = table.rows[j].cells[column_num].getAttribute('sort')? table.rows[j].cells[column_num].getAttribute('sort'): table.rows[j].cells[column_num].innerHTML;
267 var bi = parseInt(b);
268 if (bi > 0) b = bi;
269
270 if ((!reverse && a < b) || (reverse && a > b))
271 {
272 table.tBodies[0].insertBefore(table.rows[i], table.rows[j]);
273 }
274 }
275 }
276
277 for (var i = 0; i < table.rows[0].cells.length; i++)
278 {
279
280 var title = table.rows[0].cells[i].innerHTML;
281 if (
282 title.charCodeAt(0) == 8595
283 || title.charCodeAt(0) == 8593
284 )
285 table.rows[0].cells[i].innerHTML = title.substr(1);
286
287 if (i == column_num)
288 table.rows[0].cells[i].innerHTML = (reverse? '&uarr;': '&darr;') + table.rows[0].cells[i].innerHTML;
289 }
290 }
291 BX_DEBUG_INFO_CACHE = new BX.CDebugDialog();
292 </script><?
293
294 $obJSPopup = new CJSPopupOnPage('', array());
295 $obJSPopup->jsPopup = 'BX_DEBUG_INFO_CACHE';
296 $obJSPopup->StartDescription('bx-debug-window');
297 ?><p><?echo Loc::getMessage("debug_info_cache_size")?> <?=CFile::FormatSize(\Bitrix\Main\Diag\CacheTracker::getCacheStatBytes(), 0)?></p><?
298 $obJSPopup->StartContent(array('buffer' => true));
299
300 ?><div class="bx-debug-content bx-debug-content-table">
301 <table id="cacheDebug" cellpadding="2" cellspacing="0" border="0">
302 <tr class="heading-sort">
303 <td onclick="sortTable('cacheDebug', 0)">&darr;&nbsp;</td>
304 <td onclick="sortTable('cacheDebug', 1)"><?echo Loc::getMessage("debug_info_cache_table_func");?></td>
305 <td onclick="sortTable('cacheDebug', 2, true)"><?echo Loc::getMessage("debug_info_cache_table_size");?></td>
306 <td onclick="sortTable('cacheDebug', 3)"><?echo Loc::getMessage("debug_info_cache_file_path");?></td>
307 </tr><?
308
309 foreach ($arCacheDebug as $j => $cacheDebug)
310 {
311 if (mb_substr($cacheDebug["path"],0,$DOCUMENT_ROOT_LEN) === $_SERVER["DOCUMENT_ROOT"])
312 {
313 $path = '<a target="blank" href="/bitrix/admin/fileman_file_view.php?path='.urlencode(mb_substr($cacheDebug["path"],$DOCUMENT_ROOT_LEN)).'&lang='.LANGUAGE_ID.'">'.htmlspecialcharsEx(mb_substr($cacheDebug["path"],$DOCUMENT_ROOT_LEN)).'</a>';
314 }
315 else
316 {
317 $path = '&nbsp;';
318 }
319 ?><tr class="cache-row">
320 <td class="number"><?echo $j+1?></td>
321 <td><a href="javascript:BX_DEBUG_INFO_CACHE.ShowDetails('BX_DEBUG_INFO_CACHE_m_<?=$j?>')"><?echo $cacheDebug["callee_func"]?></a></td>
322 <td class="number" sort="<?echo $cacheDebug["cache_size"]?>"><?=CFile::FormatSize($cacheDebug["cache_size"], 0)?></td>
323 <td><?=$path?></td>
324 </tr><?
325 }
326 ?></table>
327 </div>#DIVIDER#<div class="bx-debug-content bx-debug-content-details"><?
328
329 foreach($arCacheDebug as $j => $cacheDebug)
330 {
331 ?><div id="BX_DEBUG_INFO_CACHE_m_<?=$j?>" style="display:none">
332 <b><?echo Loc::getMessage("debug_info_query_from")?></b><?
333
334 $k = 1;
335 foreach ($cacheDebug["TRACE"] as $n => $tr)
336 {
337 ?><br /><br />
338 <b>(<?echo ($n + 1)?>)</b><?
339
340 echo $tr["file"].":".$tr["line"]."<br /><nobr>".htmlspecialcharsbx($tr["func"]);
341 if ($n == 0)
342 {
343 echo "(...)</nobr>";
344 }
345 else
346 {
347 echo "</nobr>(".htmlspecialcharsbx(print_r($tr["args"], true)).")";
348 }
349 } //$back_trace
350 ?></div><?
351 }; // $arQueries
352 ?></div><?
353
354 $obJSPopup->StartButtons();
355 $obJSPopup->ShowStandardButtons(array('close'));
356 }
357?>
358<script>
359 var tableRows;
360 function filterTable(input, table_id, column_num)
361 {
362 var table = BX(table_id);
363 for (var i = 0; i < table.rows.length; i++)
364 {
365 var sql = table.rows[i].cells[column_num].innerHTML;
366 if (input.value.length > 0 && sql.indexOf(input.value) == -1)
367 table.rows[i].style.display = 'none';
368 else
369 table.rows[i].style.display = 'block';
370 }
371 }
372 BX_DEBUG_INFO_CACHE = new BX.CDebugDialog();
373</script><?
374
375 foreach ($APPLICATION->arIncludeDebug as $i => $arIncludeDebug)
376 {
377 ?><script>BX_DEBUG_INFO_<?=$i?> = new BX.CDebugDialog();</script><?
378
379 $obJSPopup = new CJSPopupOnPage('', []);
380 $obJSPopup->jsPopup = 'BX_DEBUG_INFO_'.$i;
381 $obJSPopup->StartDescription('bx-core-debug-info');
382 ?>
383 <p><?=Loc::getMessage("debug_info_path")?> <?=($arIncludeDebug["PATH"] ?? '')?></p>
384 <p><?=Loc::getMessage("debug_info_time")?> <?=($arIncludeDebug["TIME"] ?? '')?> <?echo Loc::getMessage("debug_info_sec")?></p>
385 <p><?=Loc::getMessage("debug_info_queries")?> <?=($arIncludeDebug["QUERY_COUNT"] ?? '')?>, <?echo Loc::getMessage("debug_info_time1")?> <?=($arIncludeDebug["QUERY_TIME"] ?? '')?> <?echo Loc::getMessage("debug_info_sec")?><?if(isset($arIncludeDebug["TIME"]) && $arIncludeDebug["TIME"] > 0):?> (<?=round($arIncludeDebug["QUERY_TIME"]/$arIncludeDebug["TIME"]*100, 2)?>%)<?endif?></p>
386 <p><?=Loc::getMessage("debug_info_search")?>: <input type="text" style="height:16px" onkeydown="filterTable(this, 'queryDebug<?echo $i?>', 1)" onpaste="filterTable(this, 'queryDebug<?echo $i?>', 1)" oninput="filterTable(this, 'queryDebug<?echo $i?>', 1)"></p><?
387
388 $obJSPopup->StartContent(['buffer' => true]);
389 if (!empty($arIncludeDebug["QUERIES"]))
390 {
391 ?><div class="bx-debug-content bx-debug-content-table"><?
392 $arQueries = [];
393 foreach ($arIncludeDebug["QUERIES"] as $j => $arQueryDebug)
394 {
395 $strSql = $arQueryDebug["QUERY"];
396
397 if (!isset($arQueries[$strSql]["COUNT"]))
398 {
399 $arQueries[$strSql]["COUNT"] = 0;
400 }
401 $arQueries[$strSql]["COUNT"]++;
402 $arQueries[$strSql]["CALLS"][] = [
403 "TIME"=>$arQueryDebug["TIME"],
404 "TRACE"=>$arQueryDebug["TRACE"]
405 ];
406 }
407 ?><table id="queryDebug<?echo $i?>" cellpadding="0" cellspacing="0" border="0"><?
408 $j = 1;
409 foreach ($arQueries as $strSql => $query)
410 {
411 ?><tr>
412 <td class="number" valign="top"><?echo $j?></td>
413 <td><a href="javascript:BX_DEBUG_INFO_<?=$i?>.ShowDetails('BX_DEBUG_INFO_<?=$i."_".$j?>')"><?echo htmlspecialcharsbx(mb_substr($strSql,0,100))."..."?></a>&nbsp;(<?echo $query["COUNT"]?>) </td>
414 <td class="number" valign="top"><?
415 $t = 0.0;
416 foreach ($query["CALLS"] as $call)
417 {
418 $t += $call["TIME"];
419 }
420 echo number_format($t/$query["COUNT"], 5);
421 ?></td>
422 </tr><?
423 $j++;
424 } //$arQueries
425 ?></table>
426 </div>#DIVIDER#<div class="bx-debug-content bx-debug-content-details"><?
427 $j = 1;
428 foreach ($arQueries as $strSql => $query)
429 {
430 ?><div id="BX_DEBUG_INFO_<?=$i."_".$j?>" style="display:none">
431 <b><?echo Loc::getMessage("debug_info_query")?> <?echo $j?>:</b>
432 <br /><br /><?
433
434 $strSql = preg_replace("/[\\n\\r\\t\\s ]+/", " ", $strSql);
435 $strSql = preg_replace("/^ +/", "", $strSql);
436 $strSql = preg_replace("/ (INNER JOIN|OUTER JOIN|LEFT JOIN|SET|LIMIT) /i", "\n\\1 ", $strSql);
437 $strSql = preg_replace("/(INSERT INTO [A-Z_0-1]+?)\\s/i", "\\1\n", $strSql);
438 $strSql = preg_replace("/(INSERT INTO [A-Z_0-1]+?)([(])/i", "\\1\n\\2", $strSql);
439 $strSql = preg_replace("/([\\s)])(VALUES)([\\s(])/i", "\\1\n\\2\n\\3", $strSql);
440 $strSql = preg_replace("/ (FROM|WHERE|ORDER BY|GROUP BY|HAVING) /i", "\n\\1\n", $strSql);
441 echo str_replace(array("\n"), array("<br />"), htmlspecialcharsbx($strSql));
442
443 ?><br /><br /><b><?echo Loc::getMessage("debug_info_query_from")?></b><?
444
445 $k = 1;
446 foreach ($query["CALLS"] as $call)
447 {
448 $back_trace = $call["TRACE"];
449
450 if (is_array($back_trace))
451 {
452 foreach ($back_trace as $n => $tr)
453 {
454 ?><br /><br /><b>(<?echo $k.".".($n+1)?>)</b><?
455 echo $tr["file"] . ":" . $tr["line"] . "<br /><nobr>" . htmlspecialcharsbx($tr["class"] . $tr["type"] . $tr["function"]);
456 if ($n == 0)
457 {
458 echo "(...)</nobr>";
459 }
460 else
461 {
462 echo "</nobr>(".htmlspecialcharsbx(print_r($tr["args"], true)).")";
463 }
464
465 if ($n > $sqlTracker->getDepthBackTrace())
466 {
467 break;
468 }
469 } //$back_trace
470 }
471 else //is_array($back_trace)
472 {
473 ?>
474 <br /><br />
475 <b>(<?echo $k?>)</b> <?echo Loc::getMessage("debug_info_query_from_unknown")?>
476 <?
477 } //is_array($back_trace)
478
479 ?><br /><br /><?
480 echo Loc::getMessage("debug_info_query_time")?> <?echo round($call["TIME"], 5)?> <?echo Loc::getMessage("debug_info_sec");
481 $k++;
482
483 } //$query["CALLS"]
484 ?></div><?
485
486 $j++;
487 }; // $arQueries
488 ?></div><?
489 } //if(count($arIncludeDebug["QUERIES"])>0)
490 $obJSPopup->StartButtons();
491 $obJSPopup->ShowStandardButtons(array('close'));
492
493 /*************************************CACHE*********************************************/
494 ?><script>BX_DEBUG_INFO_CACHE_<?=$i?> = new BX.CDebugDialog();</script><?
495 $obJSPopup = new CJSPopupOnPage('', array());
496 $obJSPopup->jsPopup = 'BX_DEBUG_INFO_CACHE_'.$i;
497 $obJSPopup->StartDescription('bx-core-debug-info');
498 ?><p><?echo Loc::getMessage("debug_info_cache_size")?> <?=CFile::FormatSize($arIncludeDebug["CACHE_SIZE"] ?? 0, 0)?></p><?
499 $obJSPopup->StartContent(array('buffer' => true));
500 if (isset($arIncludeDebug["CACHE"]) && !empty($arIncludeDebug["CACHE"]))
501 {
502 ?>
503 <div class="bx-debug-content bx-debug-content-table">
504 <table id="cacheDebug<?=$i?>" cellpadding="2" cellspacing="0" border="0">
505 <tr class="heading-sort">
506 <td onclick="sortTable('cacheDebug<?=$i?>', 0)">&darr;&nbsp;</td>
507 <td onclick="sortTable('cacheDebug<?=$i?>', 1)"><?=Loc::getMessage("debug_info_cache_table_func");?></td>
508 <td onclick="sortTable('cacheDebug<?=$i?>', 2, true)"><?=Loc::getMessage("debug_info_cache_table_size");?></td>
509 <td onclick="sortTable('cacheDebug', 3)"><?=Loc::getMessage("debug_info_cache_file_path");?></td>
510 </tr><?
511
512 foreach ($arIncludeDebug["CACHE"] as $j => $cacheDebug)
513 {
514 if (mb_substr($cacheDebug["path"],0,$DOCUMENT_ROOT_LEN) === $_SERVER["DOCUMENT_ROOT"])
515 {
516 $path = '<a target="blank" href="/bitrix/admin/fileman_file_view.php?path='.urlencode(mb_substr($cacheDebug["path"],$DOCUMENT_ROOT_LEN)).'&lang='.LANGUAGE_ID.'">'.htmlspecialcharsEx(mb_substr($cacheDebug["path"],$DOCUMENT_ROOT_LEN)).'</a>';
517 }
518 else
519 {
520 $path = '&nbsp;';
521 }
522 ?>
523 <tr class="cache-row">
524 <td class="number"><?echo $j+1?></td>
525 <td><a href="javascript:BX_DEBUG_INFO_CACHE_<?=$i?>.ShowDetails('BX_DEBUG_INFO_CACHE_<?=$i."_".$j?>')"><?echo $cacheDebug["callee_func"]?></a></td>
526 <td class="number" sort="<?echo $cacheDebug["cache_size"]?>"><?=CFile::FormatSize($cacheDebug["cache_size"], 0)?></td>
527 <td><?=$path?></td>
528 </tr><?
529 }
530 ?></table>
531 </div>#DIVIDER#<div class="bx-debug-content bx-debug-content-details"><?
532
533 foreach ($arIncludeDebug["CACHE"] as $j => $cacheDebug)
534 {
535 ?><div id="BX_DEBUG_INFO_CACHE_<?=$i?>_<?=$j?>" style="display:none">
536 <b><?=Loc::getMessage("debug_info_query_from")?></b><?
537
538 $k = 1;
539 foreach ($cacheDebug["TRACE"] as $n => $tr)
540 {
541 ?><br /><br />
542 <b>(<?echo ($n + 1)?>)</b><?
543
544 echo $tr["file"].":".$tr["line"]."<br /><nobr>".htmlspecialcharsbx($tr["func"]);
545 if ($n == 0)
546 {
547 echo "(...)</nobr>";
548 }
549 else
550 {
551 echo "</nobr>(".htmlspecialcharsbx(print_r($tr["args"], true)).")";
552 }
553 } //$back_trace
554 ?></div><?
555 }; // $arQueries
556 ?></div><?
557 } //if($arIncludeDebug["CACHE"])
558 $obJSPopup->StartButtons();
559 $obJSPopup->ShowStandardButtons(array('close'));
560 } //$APPLICATION->arIncludeDebug
561} //$bShowStat 2
562
564{
566 $obJSPopup->jsPopup = 'jsDebugTimeWindow';
567
568?><script>var jsDebugTimeWindow = new BX.CDebugDialog();</script>
569<div id="BX_DEBUG_TIME" class="bx-debug-window" style="z-index:99; width:660px !important;"><?
570 $obJSPopup->StartDescription('bx-core-debug-info');
571 ?><p><?=Loc::getMessage("debug_info_page")?> <?=$APPLICATION->GetCurPage()?></p>
572 <p><?=Loc::getMessage("debug_info_comps_cache")?> <?if(COption::GetOptionString("main", "component_cache_on", "Y")=="Y") echo Loc::getMessage("debug_info_comps_cache_on"); else echo "<a href=\"/bitrix/admin/cache.php\"><font class=\"errortext\">".Loc::getMessage("debug_info_comps_cache_off")."</font></a>";?>.</p>
573 <p><?
574 if (\Bitrix\Main\Data\Cache::getShowCacheStat())
575 {
576 echo Loc::getMessage("debug_info_cache_size")." ",CFile::FormatSize(\Bitrix\Main\Diag\CacheTracker::getCacheStatBytes(), 0);
577 }
578 else
579 {
580 echo "&nbsp;";
581 }
582 ?></p><?
583
584 $obJSPopup->StartContent(array('buffer' => true));
585
586 ?><div id="BX_DEBUG_TIME_1">
587 <div class="bx-debug-content bx-debug-content-table">
588
589<table cellpadding="0" cellspacing="0" border="0" width="100%">
590 <tr class="heading">
591 <td>&nbsp;</td>
592 <td>&nbsp;</td>
593 <td class="number" nowrap><span><?=Loc::getMessage("debug_info_page_exec")?></span></td>
594 <td class="number" nowrap><span><?=Loc::getMessage("debug_info_sec")?></span></td>
595 <?if($bShowComps):?>
596 <td class="number" nowrap><span><?=Loc::getMessage("debug_info_comps_exec")?></span></td>
597 <td class="number" nowrap><span><?=Loc::getMessage("debug_info_sec")?></span></td>
598 <?endif;
599 if($bShowStat):?>
600 <td class="number" nowrap><span><?=Loc::getMessage("debug_info_queries_exec")?></span></td>
601 <td class="number" nowrap><span><?=Loc::getMessage("debug_info_sec")?></span></td>
602 <?endif;?>
603 <td class="heading">&nbsp;</td>
604 </tr>
605 <tr class="heading heading-bottom">
606 <td>&nbsp;</td>
607 <td>
608 <?if($bShowComps):
609 ?><a style="font-weight:bold !important" href="javascript:jsDebugTimeWindow.ShowDetails('BX_DEBUG_TIME_1_1')"><?echo GetMessage("debug_info_whole_page")?></a><?
610 else:
611 ?><b><?=Loc::getMessage("debug_info_whole_page")?></b><?
612 endif?>
613 </td>
614 <td class="number" nowrap><b>100%</b></td>
615 <td class="number" nowrap><b><?echo number_format($PAGE, 4)?></b></td>
616 <?if($bShowComps):?>
617 <td class="number" nowrap><b><?echo intval($arAreas["PAGE"]["TRACE"]["COMPONENT_COUNT"])?></b></td>
618 <td class="number" nowrap><b><?echo number_format($arAreas["PAGE"]["TRACE"]["COMPONENT_TIME"], 4)?></b></td>
619 <?endif;
620
621 if($bShowStat):?>
622 <td class="number" nowrap><b><?echo $arAreas["PAGE"]["TRACE"]["QUERY_COUNT"]+$arAreas["PAGE"]["TRACE"]["COMP_QUERY_COUNT"]?></b></td>
623 <td class="number" nowrap><b><?echo number_format($arAreas["PAGE"]["TRACE"]["QUERY_TIME"]+$arAreas["PAGE"]["TRACE"]["COMP_QUERY_TIME"], 4)?></b></td>
624 <?endif;?>
625 <td class="heading">&nbsp;</td>
626 </tr>
627 <tr valign="top">
628 <td>&nbsp;</td>
629 <td>
630 <?if($bShowComps):?>
631 <p><a style="font-weight:bold !important" href="javascript:jsDebugTimeWindow.ShowDetails('BX_DEBUG_TIME_1_2')"><?=Loc::getMessage("debug_info_prolog")?></a></p>
632 <p>
633 &nbsp;&nbsp;<a href="javascript:jsDebugTimeWindow.ShowDetails('BX_DEBUG_TIME_1_3')"><?=Loc::getMessage("debug_info_prolog_before")?></a><br>
634 &nbsp;&nbsp;<a href="javascript:jsDebugTimeWindow.ShowDetails('BX_DEBUG_TIME_1_5')"><?=Loc::getMessage("debug_info_prolog_after")?></a><br>
635 </p>
636 <?else:?>
637 <p><b><?=Loc::getMessage("debug_info_prolog")?></b></p>
638 <p>
639 &nbsp;&nbsp;<?=Loc::getMessage("debug_info_prolog_before")?><br>
640 &nbsp;&nbsp;<?=Loc::getMessage("debug_info_prolog_after")?><br>
641 </p>
642 <?endif?>
643 </td>
644 <td class="number" nowrap>
645 <p><b><?echo number_format($PROLOG/$PAGE*100, 2),"%"?></b></p>
646 <p>
647 <?echo number_format($PROLOG_BEFORE/$PAGE*100, 2),"%"?><br>
648 <?echo number_format($PROLOG_AFTER/$PAGE*100, 2),"%"?><br>
649 </p>
650 </td>
651 <td class="number" nowrap>
652 <p><b><?echo number_format($PROLOG, 4)?></b></p>
653 <p>
654 <?echo number_format($PROLOG_BEFORE, 4)?><br>
655 <?echo number_format($PROLOG_AFTER, 4)?><br>
656 </p>
657 </td>
658 <?if($bShowComps):?>
659 <td class="number" nowrap>
660 <p><b><?echo intval($arAreas["PROLOG"]["TRACE"]["COMPONENT_COUNT"])?></b></p>
661 <p>
662 <?echo intval($arAreas["PROLOG_BEFORE"]["TRACE"]["COMPONENT_COUNT"])?><br>
663 <?echo intval($arAreas["PROLOG_AFTER"]["TRACE"]["COMPONENT_COUNT"])?><br>
664 </p>
665 </td>
666 <td class="number" nowrap>
667 <p><b><?echo number_format($arAreas["PROLOG"]["TRACE"]["COMPONENT_TIME"], 4)?></b></p>
668 <p>
669 <?echo number_format($arAreas["PROLOG_BEFORE"]["TRACE"]["COMPONENT_TIME"], 4)?><br>
670 <?echo number_format($arAreas["PROLOG_AFTER"]["TRACE"]["COMPONENT_TIME"], 4)?><br>
671 </p>
672 </td>
673 <?endif;?>
674 <?if($bShowStat):?>
675 <td class="number" nowrap>
676 <p><b><?echo $arAreas["PROLOG"]["TRACE"]["QUERY_COUNT"]+$arAreas["PROLOG"]["TRACE"]["COMP_QUERY_COUNT"]?></b></p>
677 <p>
678 <?echo $arAreas["PROLOG_BEFORE"]["TRACE"]["QUERY_COUNT"]+$arAreas["PROLOG_BEFORE"]["TRACE"]["COMP_QUERY_COUNT"]?><br>
679 <?echo $arAreas["PROLOG_AFTER"]["TRACE"]["QUERY_COUNT"]+$arAreas["PROLOG_AFTER"]["TRACE"]["COMP_QUERY_COUNT"]?><br>
680 </p>
681 </td>
682 <td class="number" nowrap>
683 <p><b><?echo number_format($arAreas["PROLOG"]["TRACE"]["QUERY_TIME"]+$arAreas["PROLOG"]["TRACE"]["COMP_QUERY_TIME"], 4)?></b></p>
684 <p>
685 <?echo number_format($arAreas["PROLOG_BEFORE"]["TRACE"]["QUERY_TIME"]+$arAreas["PROLOG_BEFORE"]["TRACE"]["COMP_QUERY_TIME"], 4)?><br>
686 <?echo number_format($arAreas["PROLOG_AFTER"]["TRACE"]["QUERY_TIME"]+$arAreas["PROLOG_AFTER"]["TRACE"]["COMP_QUERY_TIME"], 4)?><br>
687 </p>
688 </td>
689 <?endif;?>
690 <td>&nbsp;</td>
691 </tr>
692 <tr valign="top">
693 <td>&nbsp;</td>
694 <td>
695 <?if($bShowComps):?>
696 <p><a style="font-weight:bold !important" href="javascript:jsDebugTimeWindow.ShowDetails('BX_DEBUG_TIME_1_6')"><?=Loc::getMessage("debug_info_work_area")?></a></p>
697 <?else:?>
698 <p><b><?=Loc::getMessage("debug_info_work_area")?></b></p>
699 <?endif?>
700 </td>
701 <td class="number" nowrap><p><b><?echo number_format($WORK_AREA/$PAGE*100, 2),"%"?></b></p></td>
702 <td class="number" nowrap><p><b><?echo number_format($WORK_AREA, 4)?></b></p></td>
703 <?if($bShowComps):?>
704 <td class="number" nowrap><b><?echo intval($arAreas["WORK_AREA"]["TRACE"]["COMPONENT_COUNT"])?></b></td>
705 <td class="number" nowrap><b><?echo number_format($arAreas["WORK_AREA"]["TRACE"]["COMPONENT_TIME"], 4)?></b></td>
706 <?endif;
707 if($bShowStat):?>
708 <td class="number" nowrap><p><b><?echo $arAreas["WORK_AREA"]["TRACE"]["QUERY_COUNT"]+$arAreas["WORK_AREA"]["TRACE"]["COMP_QUERY_COUNT"]?></b></p></td>
709 <td class="number" nowrap><p><b><?echo number_format($arAreas["WORK_AREA"]["TRACE"]["QUERY_TIME"]+$arAreas["WORK_AREA"]["TRACE"]["COMP_QUERY_TIME"], 4)?></b></p></td>
710 <?endif;?>
711 <td>&nbsp;</td>
712 </tr>
713 <tr valign="top">
714 <td>&nbsp;</td>
715 <td>
716 <?if($bShowComps):?>
717 <p><a style="font-weight:bold !important" href="javascript:jsDebugTimeWindow.ShowDetails('BX_DEBUG_TIME_1_7')"><?=Loc::getMessage("debug_info_epilog")?></a></p>
718 <p>
719 &nbsp;&nbsp;<a href="javascript:jsDebugTimeWindow.ShowDetails('BX_DEBUG_TIME_1_8')"><?=Loc::getMessage("debug_info_epilog_before")?></a><br>
720 &nbsp;&nbsp;<a href="javascript:jsDebugTimeWindow.ShowDetails('BX_DEBUG_TIME_1_9')"><?=Loc::getMessage("debug_info_epilog_after")?></a><br>
721 </p>
722 <?else:?>
723 <p><b><?=Loc::getMessage("debug_info_epilog")?></b></p>
724 <p>
725 &nbsp;&nbsp;<?=Loc::getMessage("debug_info_epilog_before")?><br>
726 &nbsp;&nbsp;<?=Loc::getMessage("debug_info_epilog_after")?><br>
727 </p>
728 <?endif?>
729 </td>
730 <td class="number" nowrap>
731 <p><b><?echo number_format($EPILOG/$PAGE*100, 2),"%"?></b></p>
732 <p>
733 <?echo number_format($EPILOG_BEFORE/$PAGE*100, 2),"%"?><br>
734 <?echo number_format($EPILOG_AFTER/$PAGE*100, 2),"%"?><br>
735 </p>
736 </td>
737 <td class="number" nowrap>
738 <p><b><?echo number_format($EPILOG, 4)?></b></p>
739 <p>
740 <?echo number_format($EPILOG_BEFORE, 4)?><br>
741 <?echo number_format($EPILOG_AFTER, 4)?><br>
742 </p>
743 </td>
744 <?if ($bShowComps):?>
745 <td class="number" nowrap>
746 <p><b><?echo intval($arAreas["EPILOG"]["TRACE"]["COMPONENT_COUNT"])?></b></p>
747 <p>
748 <?echo intval($arAreas["EPILOG_BEFORE"]["TRACE"]["COMPONENT_COUNT"])?><br>
749 <?echo intval($arAreas["EPILOG_AFTER"]["TRACE"]["COMPONENT_COUNT"])?><br>
750 </p>
751 </td>
752 <td class="number" nowrap>
753 <p><b><?echo number_format($arAreas["EPILOG"]["TRACE"]["COMPONENT_TIME"], 4)?></b></p>
754 <p>
755 <?echo number_format($arAreas["EPILOG_BEFORE"]["TRACE"]["COMPONENT_TIME"], 4)?><br>
756 <?echo number_format($arAreas["EPILOG_AFTER"]["TRACE"]["COMPONENT_TIME"], 4)?><br>
757 </p>
758 </td>
759 <?endif;
760 if ($bShowStat):?>
761 <td class="number" nowrap>
762 <p><b><?echo $arAreas["EPILOG"]["TRACE"]["QUERY_COUNT"]+$arAreas["EPILOG"]["TRACE"]["COMP_QUERY_COUNT"]?></b></p>
763 <p>
764 <?echo $arAreas["EPILOG_BEFORE"]["TRACE"]["QUERY_COUNT"]+$arAreas["EPILOG_BEFORE"]["TRACE"]["COMP_QUERY_COUNT"]?><br>
765 <?echo $arAreas["EPILOG_AFTER"]["TRACE"]["QUERY_COUNT"]+$arAreas["EPILOG_AFTER"]["TRACE"]["COMP_QUERY_COUNT"]?><br>
766 </p>
767 </td>
768 <td class="number" nowrap>
769 <p><b><?echo number_format($arAreas["EPILOG"]["TRACE"]["QUERY_TIME"]+$arAreas["EPILOG"]["TRACE"]["COMP_QUERY_TIME"], 4)?></b></p>
770 <p>
771 <?echo number_format($arAreas["EPILOG_BEFORE"]["TRACE"]["QUERY_TIME"]+$arAreas["EPILOG_BEFORE"]["TRACE"]["COMP_QUERY_TIME"], 4)?><br>
772 <?echo number_format($arAreas["EPILOG_AFTER"]["TRACE"]["QUERY_TIME"]+$arAreas["EPILOG_AFTER"]["TRACE"]["COMP_QUERY_TIME"], 4)?><br>
773 </p>
774 </td>
775 <?endif;?>
776 <td>&nbsp;</td>
777 </tr>
778</table>
779
780 </div>
781 </div>#DIVIDER#<?if($bShowComps):?><div class="bx-debug-content bx-debug-content-table"><?
782 foreach ($arAreas as $id => $arArea):
783 ?><div id="BX_DEBUG_TIME_1_<?echo $arArea["NUM"]?>" style="display:none">
784 <table cellpadding="0" cellspacing="0" border="0" width="100%"><?
785
786 $tim = 0;
787 foreach ($APPLICATION->arIncludeDebug as $i => $arIncludeDebug)
788 {
789 if (isset($arIncludeDebug["REL_PATH"]) && in_array($arIncludeDebug["BX_STATE"], $arArea["FLT"]))
790 {
791 $tim += $arIncludeDebug["TIME"];
792 }
793 }
794 if ($tim > $arArea["TIME"]) $tim = $arArea["TIME"];
795 ?>
796 <tr>
797 <td class="number" valign="top">0</td>
798 <td><?
799 if($bShowStat):
800 ?><a title="<?echo Loc::getMessage("debug_info_query_title")?>" href="javascript:BX_DEBUG_INFO_<?echo $arArea["IND"]?>.Show(); BX_DEBUG_INFO_<?echo $arArea['IND']?>.ShowDetails('BX_DEBUG_INFO_<?echo $arArea['IND']?>_1');"><?echo GetMessage("debug_info_raw_code")?></a><?
801 else:
802 echo Loc::getMessage("debug_info_raw_code");
803 endif;
804 ?></td>
805 <td>&nbsp;</td>
806 <td class="number">&nbsp;<?
807 if($arArea["TRACE"]["CACHE_SIZE"])
808 echo CFile::FormatSize($arArea["TRACE"]["CACHE_SIZE"],0);
809 ?></td>
810 <td class="number"><?if($arArea["TIME"] > 0):?><?echo number_format((1-$tim/$arArea["TIME"])*100, 2)?>%<?endif?></td>
811 <td class="number"><?echo number_format($arArea["TIME"] - $tim, 4)?> <?echo Loc::getMessage("debug_info_sec")?></td>
812 <td class="number"><?echo intval($arArea["TRACE"]["QUERY_COUNT"])?> <?echo Loc::getMessage("debug_info_query_short")?></td>
813 <td class="number"><?echo number_format($arArea["TRACE"]["QUERY_TIME"], 4)?> <?echo Loc::getMessage("debug_info_sec")?></td>
814 </tr><?
815 $j = 1;
816 $k = 1;
817 foreach ($APPLICATION->arIncludeDebug as $i=>$arIncludeDebug):
818 if (isset($arIncludeDebug["REL_PATH"]) && in_array($arIncludeDebug["BX_STATE"], $arArea["FLT"])):
819 ?><tr>
820 <td class="number" valign="top"><?echo $k?></td>
821 <td><?
822 if ($arIncludeDebug["LEVEL"] > 0)
823 {
824 echo str_repeat("&nbsp;&nbsp;", $arIncludeDebug["LEVEL"]);
825 }
826 if ($bShowStat):
827 ?><a title="<?echo Loc::getMessage("debug_info_query_title")?>" href="javascript:BX_DEBUG_INFO_<?echo $i?>.Show(); BX_DEBUG_INFO_<?echo $i?>.ShowDetails('BX_DEBUG_INFO_<?echo $i?>_1');"><?echo htmlspecialcharsbx($arIncludeDebug["REL_PATH"])?></a><?
828 else:
829 echo htmlspecialcharsbx($arIncludeDebug["REL_PATH"]);
830 endif;
831 ?></td>
832 <td>&nbsp;<?
833 switch ($arIncludeDebug["CACHE_TYPE"])
834 {
835 case "N": echo Loc::getMessage("debug_info_cache_off"); break;
836 case "Y": echo Loc::getMessage("debug_info_cache_on"); break;
837 default: echo Loc::getMessage("debug_info_cache_auto"); break;
838 }
839 ?></td>
840 <td class="number" nowrap>&nbsp;<?
841 if ($arIncludeDebug["CACHE_SIZE"])
842 {
843 echo CFile::FormatSize($arIncludeDebug["CACHE_SIZE"],0);
844 }
845 ?></td>
846 <td class="number" nowrap><?if ($arArea["TIME"] > 0):?><?echo number_format($arIncludeDebug["TIME"]/$arArea["TIME"]*100, 2)?>%<?endif?></td>
847 <td class="number" nowrap><?echo number_format($arIncludeDebug["TIME"], 4)?> <?echo Loc::getMessage("debug_info_sec")?></td>
848 <td class="number" nowrap><?echo intval($arIncludeDebug["QUERY_COUNT"])?> <?echo Loc::getMessage("debug_info_query_short")?></td>
849 <td class="number" nowrap><?echo number_format($arIncludeDebug["QUERY_TIME"], 4)?> <?echo Loc::getMessage("debug_info_sec")?></td>
850 </tr><?
851 $k++;
852 endif;
853 $j++;
855 ?></table>
856 </div><?
858 ?></div><?
859 endif;
860
861 $obJSPopup->StartButtons();
862 $obJSPopup->ShowStandardButtons(['close']);
863
864?></div><?
865 if (
866 isset($_GET["show_sql_stat"])
867 && $_GET["show_sql_stat"] === "Y"
868 && isset($_GET["show_page_exec_time"])
869 && $_GET["show_page_exec_time"] === "Y"
870 && isset($_GET["show_sql_stat_immediate"])
871 && $_GET["show_sql_stat_immediate"] === "Y"
872 && preg_match("#/admin/perfmon_hit_list.php#", $_SERVER["HTTP_REFERER"])
873 )
874 {
875 echo "<script>BX.ready(function() {jsDebugTimeWindow.Show(); jsDebugTimeWindow.ShowDetails('BX_DEBUG_TIME_1_1');});</script>";
876 }
877}
$path
Определения access_edit.php:21
const BX_ROOT
Определения bx_root.php:3
global $APPLICATION
Определения include.php:80
static getInstance()
Определения application.php:98
static getCacheTracking()
Определения cachetracker.php:121
static FormatSize($size, $precision=2)
Определения file.php:1453
static Init($arExt=array(), $bReturn=false)
Определения jscore.php:66
Определения jspopup.php:289
if( $bShowExtTime) elseif($bShowTime) $totalQueryCount
Определения debug_info.php:185
$sqlTracker
Определения debug_info.php:28
$totalQueryTime
Определения debug_info.php:186
if($bShowTime|| $bShowStat|| $bShowCacheStat) $bShowExtTime
Определения debug_info.php:48
$DOCUMENT_ROOT_LEN
Определения debug_info.php:49
const START_EXEC_EPILOG_AFTER_1
Определения epilog_admin_after.php:16
$main_exec_time
Определения epilog_admin_after.php:43
const START_EXEC_EPILOG_BEFORE_1
Определения epilog_admin_before.php:11
& nbsp
Определения epilog_main_admin.php:38
hidden PROPERTY[<?=$propertyIndex?>][CODE]<?=htmlspecialcharsEx( $propertyCode)?> height
Определения file_new.php:759
bx popup label bx width30 PAGE_NEW_MENU_NAME text width
Определения file_new.php:677
bx popup label bx hidden PROPERTY[<?=$propertyIndex?>][CODE]<?=htmlspecialcharsEx( $propertyCode)?> bx_view_property_<?=$propertyIndex?> overflow
Определения file_new.php:745
background position
Определения file_new.php:745
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
background color
Определения file_new.php:745
bx_acc_lim_group_list limitGroupList[] multiple<?=$group[ 'ID']?> ID selected margin top
Определения file_new.php:657
hidden mSiteList<?=htmlspecialcharsbx(serialize( $siteList))?><?=htmlspecialcharsbx( $siteList[ $j]["ID"])?> _Propery<? if(((COption::GetOptionString( $module_id, "different_set", "N")=="Y") &&( $j !=0))||(COption::GetOptionString( $module_id, "different_set", "N")=="N")) echo "display: none;"?> top adm detail content cell l top adm detail content cell r heading center center ID left
Определения options.php:768
$query
Определения get_search.php:11
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
endif
Определения csv_new_setup.php:990
$application
Определения bitrix.php:23
$GLOBALS[ 'DB'] debug
Определения start.php:56
htmlspecialcharsEx($str)
Определения tools.php:2685
htmlspecialcharsbx($string, $flags=ENT_COMPAT, $doubleEncode=true)
Определения tools.php:2701
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397
white space
Определения options.php:321
const START_EXEC_PROLOG_AFTER_1
Определения prolog_after.php:20
const START_EXEC_PROLOG_AFTER_2($APPLICATION->GetShowIncludeAreas())
Определения prolog_after.php:136
global_menu_<?echo $menu["menu_id"]?> adm main menu item icon adm main menu item text text adm main menu hover adm submenu menucontainer menu_id menu_id items_id items_id desktop menu_id block none adm global submenu<?=($subMenuDisplay=="block" ? " adm-global-submenu-active" :"")?> global_submenu_<?echo $menu["menu_id"]?> text MAIN_PR_ADMIN_FAV items adm submenu items wrap adm submenu items stretch wrap BX adminMenu itemsStretchScroll()"> <table class if (!empty( $menu["items"])) elseif ( $menu[ 'menu_id']=='desktop') if ( $menu[ 'menu_id']=='desktop') endforeach
Определения prolog_main_admin.php:255
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
<? endif;?> window document title
Определения prolog_main_admin.php:76
die
Определения quickway.php:367
$i
Определения factura.php:643
font style
Определения invoice.php:442
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
text align
Определения template.php:556
margin right
Определения options_user_settings.php:273
$obJSPopup
Определения settings_admin_form.php:102
$k
Определения template_pdf.php:567
$GLOBALS['_____370096793']
Определения update_client.php:1
$n
Определения update_log.php:107