DLE не хватает времени на выполнение каких-то операций

V2
На сайте с 05.01.2012
Offline
116
618

Каждый день около 00-00 на некоторых сайтах на DLE возникает такая ошибка.

[20-Aug-2016 00:02:53 UTC] PHP Fatal error: Maximum execution time of 60 seconds exceeded in \site.ru\engine\classes\mysqli.class.php on line 76

[20-Aug-2016 00:02:53 UTC] PHP Fatal error: Maximum execution time of 60 seconds exceeded in \site.ru\engine\classes\mysqli.class.php on line 76

[20-Aug-2016 00:02:53 UTC] PHP Fatal error: Maximum execution time of 60 seconds exceeded in \site.ru\engine\classes\mysqli.class.php on line 76

[21-Aug-2016 00:03:35 UTC] PHP Fatal error: Maximum execution time of 60 seconds exceeded in \site.ru\engine\classes\mysqli.class.php on line 76

[21-Aug-2016 00:03:37 UTC] PHP Fatal error: Maximum execution time of 60 seconds exceeded in \site.ru\engine\classes\mysqli.class.php on line 76

[22-Aug-2016 00:02:59 UTC] PHP Fatal error: Maximum execution time of 60 seconds exceeded in \site.ru\engine\classes\mysqli.class.php on line 76

[23-Aug-2016 00:02:52 UTC] PHP Fatal error: Maximum execution time of 60 seconds exceeded in \site.ru\engine\classes\mysqli.class.php on line 76

[23-Aug-2016 00:02:52 UTC] PHP Fatal error: Maximum execution time of 60 seconds exceeded in \site.ru\engine\classes\mysqli.class.php on line 76

Не хватает, как я понимаю, 60-ти секунд для выполнения каких-то операций в базе данных.

Как узнать что именно сайт хочет сделать в это время? Можно попробовать увеличить

время выполнения скрипта, но стоит ли, 60 сек это не так уж и мало.

Вот строчки этого файла, включая 76-ю в которой ошибка

70 function query($query, $show_error=true)

71 {

72 $time_before = $this->get_real_time();

73

74 if(!$this->db_id) $this->connect(DBUSER, DBPASS, DBNAME, DBHOST);

75

76 if(!($this->query_id = mysqli_query($this->db_id, $query) )) {

77

78 $this->mysql_error = mysqli_error($this->db_id);

79 $this->mysql_error_num = mysqli_errno($this->db_id);

80

81 if($show_error) {

82 $this->display_error($this->mysql_error, $this->mysql_error_num, $query);

83 }

84 }

85

86 $this->MySQL_time_taken += $this->get_real_time() - $time_before;

87

88// $this->query_list[] = array( 'time' => ($this->get_real_time() - $time_before),

89// 'query' => $query,

90// 'num' => (count($this->query_list) + 1));

91

92 $this->query_num ++;

93

94 return $this->query_id;

95 }

oxg
На сайте с 08.08.2011
Offline
218
oxg
#1

может это хостинг делает бекапы? и перегружает базу временно

Прокси IPv6 Россия (http://proxy-ipv6.ru/proxy_ipv6.html) /32 сеть, каждый IP в отдельной /48 сети Прокси IPv4 (http://proxyk.ru/proxy-russia.html) более 160 подсетей А,B,C Прокси для Инстаграм (http://proxy-ipv6.ru/instagram-proxy.html)
V2
На сайте с 05.01.2012
Offline
116
#2

Нет, бэкап идет в 04-00

W
На сайте с 18.09.2006
Offline
86
#3

Сделайте сохранение долгих запросов


$longLimit = 1;
$time = $this->get_real_time() - $time_before;
if($time > $longLimit) {
.... тут сделайте сохранение запроса $query и $time например в файл
}

О записи в файл тут -> http://www.php.net/manual/ru/function.fwrite.php

Так у вас будут сохранены все запросы время выполнения которых превышает параметр $longLimit, например в примере будут сохраняться все запросы выполняющиеся более 1 секунды.

И увеличьте время выполнения, иначе у вас до сохранения не дойдет, скрипт вывалится на самом запросе по Maximum execution time, а когда будет лог, будите смотреть что и почему так долго выполняется.

L
На сайте с 10.02.2015
Offline
222
#4

Включите slow_query_log

V2
На сайте с 05.01.2012
Offline
116
#5

Включил slow_query_log, туда как я понимаю долгие запросы сами будут писаться и нет необходимости вносить изменения в скрипт. Хотя получается полюбому нужно увеличивать Maximum execution time чтобы дождаться пока запрос выполнится или как?

dma84
На сайте с 21.04.2009
Offline
168
#6
Vitaly2012:
Включил slow_query_log, туда как я понимаю долгие запросы сами будут писаться и нет необходимости вносить изменения в скрипт. Хотя получается полюбому нужно увеличивать Maximum execution time чтобы дождаться пока запрос выполнится или как?

Как раз таки есть необходимость вносить изменения как в скрипт, так и в структуру БД.

Пройдитесь по медленным запросам, посмотрите EXPLAIN. Протестируйте эти запросы в MyAdmin'не, если они на самом деле быстрые, то все вопросы к хостеру. В таких случаях бывает, что, скорее всего, мускуль сервер перегружен.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий