|
1
|
|
|
<?php |
|
2
|
|
|
/** |
|
3
|
|
|
* Created by Gorlum 11.06.2017 9:58 |
|
4
|
|
|
*/ |
|
5
|
|
|
|
|
6
|
|
|
namespace Core; |
|
7
|
|
|
|
|
8
|
|
|
|
|
9
|
|
|
use \classSupernova; |
|
10
|
|
|
|
|
11
|
|
|
class SnBootstrap { |
|
12
|
|
|
|
|
13
|
|
|
public static function install_benchmark() { |
|
14
|
|
|
register_shutdown_function(function () { |
|
15
|
|
|
if(defined('IN_AJAX')) { |
|
16
|
|
|
return; |
|
17
|
|
|
} |
|
18
|
|
|
|
|
19
|
|
|
global $user, $locale_cache_statistic; |
|
20
|
|
|
|
|
21
|
|
|
$now = microtime(true); |
|
22
|
|
|
$totalTime = round($now - SN_TIME_MICRO, 6); |
|
23
|
|
|
$executionTime = round(SN_TIME_RENDER_START - SN_TIME_MICRO, 6); |
|
24
|
|
|
$displayTime = round($now - SN_TIME_RENDER_START, 6); |
|
25
|
|
|
|
|
26
|
|
|
$otherTime = defined('SN_TIME_RENDER_START') ? " (exec: {$executionTime}, display: {$displayTime})" : ''; |
|
27
|
|
|
|
|
28
|
|
|
print('<div id="benchmark" class="benchmark"><hr>Benchmark ' . $totalTime . 's' . $otherTime . ', memory: ' . number_format(memory_get_usage() - SN_MEM_START) . |
|
29
|
|
|
(!empty($locale_cache_statistic['misses']) ? ', LOCALE MISSED' : '') . |
|
30
|
|
|
(class_exists('classSupernova') && is_object(classSupernova::$db) ? ', DB time: ' . round(classSupernova::$db->time_mysql_total, 6) . 's' : '') . |
|
31
|
|
|
'</div>'); |
|
32
|
|
|
if($user['authlevel'] >= 2 && file_exists(SN_ROOT_PHYSICAL . 'badqrys.txt') && @filesize(SN_ROOT_PHYSICAL . 'badqrys.txt') > 0) { |
|
33
|
|
|
echo '<a href="badqrys.txt" target="_blank" style="color:red">', 'HACK ALERT!', '</a>'; |
|
34
|
|
|
} |
|
35
|
|
|
|
|
36
|
|
|
if(!empty($locale_cache_statistic['misses'])) { |
|
37
|
|
|
print('<!--'); |
|
38
|
|
|
pdump($locale_cache_statistic); |
|
39
|
|
|
print('-->'); |
|
40
|
|
|
} |
|
41
|
|
|
}); |
|
42
|
|
|
} |
|
43
|
|
|
|
|
44
|
|
|
public static function init_debug_state() { |
|
45
|
|
|
if($_SERVER['SERVER_NAME'] == 'localhost' && !defined('BE_DEBUG')) { |
|
46
|
|
|
define('BE_DEBUG', true); |
|
47
|
|
|
} |
|
48
|
|
|
// define('DEBUG_SQL_ONLINE', true); // Полный дамп запросов в рил-тайме. Подойдет любое значение |
|
|
|
|
|
|
49
|
|
|
define('DEBUG_SQL_ERROR', true); // Выводить в сообщении об ошибке так же полный дамп запросов за сессию. Подойдет любое значение |
|
50
|
|
|
define('DEBUG_SQL_COMMENT_LONG', true); // Добавлять SQL запрос длинные комментарии. Не зависим от всех остальных параметров. Подойдет любое значение |
|
51
|
|
|
define('DEBUG_SQL_COMMENT', true); // Добавлять комментарии прямо в SQL запрос. Подойдет любое значение |
|
52
|
|
|
// Включаем нужные настройки |
|
53
|
|
|
defined('DEBUG_SQL_ONLINE') && !defined('DEBUG_SQL_ERROR') ? define('DEBUG_SQL_ERROR', true) : false; |
|
54
|
|
|
defined('DEBUG_SQL_ERROR') && !defined('DEBUG_SQL_COMMENT') ? define('DEBUG_SQL_COMMENT', true) : false; |
|
55
|
|
|
defined('DEBUG_SQL_COMMENT_LONG') && !defined('DEBUG_SQL_COMMENT') ? define('DEBUG_SQL_COMMENT', true) : false; |
|
56
|
|
|
|
|
57
|
|
|
if(defined('BE_DEBUG') || classSupernova::$config->debug) { |
|
|
|
|
|
|
58
|
|
|
@define('BE_DEBUG', true); |
|
59
|
|
|
@ini_set('display_errors', 1); |
|
60
|
|
|
@error_reporting(E_ALL ^ E_NOTICE ^ E_DEPRECATED); |
|
61
|
|
|
} else { |
|
62
|
|
|
@define('BE_DEBUG', false); |
|
63
|
|
|
@ini_set('display_errors', 0); |
|
64
|
|
|
} |
|
65
|
|
|
|
|
66
|
|
|
} |
|
67
|
|
|
|
|
68
|
|
|
/** |
|
69
|
|
|
* @param \classConfig $config |
|
70
|
|
|
*/ |
|
71
|
|
|
public static function performUpdate(&$config) { |
|
72
|
|
|
$update_file = SN_ROOT_PHYSICAL . "includes/update.php"; |
|
73
|
|
|
if( |
|
74
|
|
|
!file_exists($update_file) |
|
75
|
|
|
|| |
|
76
|
|
|
( |
|
77
|
|
|
filemtime($update_file) <= $config->db_loadItem('var_db_update') |
|
78
|
|
|
&& |
|
79
|
|
|
$config->db_loadItem('db_version') >= DB_VERSION |
|
80
|
|
|
) |
|
81
|
|
|
) { |
|
82
|
|
|
return; |
|
83
|
|
|
} |
|
84
|
|
|
|
|
85
|
|
|
if(defined('IN_ADMIN')) { |
|
86
|
|
|
sn_db_transaction_start(); // Для защиты от двойного запуска апдейта - начинаем транзакцию. Так запись в базе будет блокирована |
|
87
|
|
|
if(SN_TIME_NOW >= $config->db_loadItem('var_db_update_end')) { |
|
88
|
|
|
$config->db_saveItem('var_db_update_end', SN_TIME_NOW + ($config->upd_lock_time ? $config->upd_lock_time : 300)); |
|
|
|
|
|
|
89
|
|
|
sn_db_transaction_commit(); |
|
90
|
|
|
|
|
91
|
|
|
require_once($update_file); |
|
92
|
|
|
|
|
93
|
|
|
$current_time = time(); |
|
94
|
|
|
$config->db_saveItem('var_db_update', $current_time); |
|
95
|
|
|
$config->db_saveItem('var_db_update_end', $current_time); |
|
96
|
|
|
} elseif(filemtime($update_file) > $config->var_db_update) { |
|
|
|
|
|
|
97
|
|
|
$timeout = $config->var_db_update_end - SN_TIME_NOW; |
|
|
|
|
|
|
98
|
|
|
die( |
|
99
|
|
|
"Обновляется база данных. Рассчетное время окончания - {$timeout} секунд (время обновления может увеличиваться). Пожалуйста, подождите...<br /> |
|
100
|
|
|
Obnovljaetsja baza dannyh. Rasschetnoe vremya okonchanija - {$timeout} secund. Pozhalujsta, podozhdute...<br /> |
|
101
|
|
|
Database update in progress. Estimated update time {$timeout} seconds (can increase depending on update process). Please wait..." |
|
102
|
|
|
); |
|
103
|
|
|
} |
|
104
|
|
|
sn_db_transaction_rollback(); |
|
105
|
|
|
} else { |
|
106
|
|
|
die( |
|
107
|
|
|
'Происходит обновление сервера - пожалуйста, подождите...<br /> |
|
108
|
|
|
Proishodit obnovlenie servera - pozhalujsta, podozhdute...<br /> |
|
109
|
|
|
Server upgrading now - please wait...<br /> |
|
110
|
|
|
<a href="admin/overview.php">Admin link</a>' |
|
111
|
|
|
); |
|
112
|
|
|
} |
|
113
|
|
|
} |
|
114
|
|
|
|
|
115
|
|
|
} |
|
116
|
|
|
|
Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.
The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.
This check looks for comments that seem to be mostly valid code and reports them.