Реклама на сайте Advertise with us

Как в PHP приостановить выдачу контента на время?

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 07/05/08 в 18:54       Ответить с цитатойцитата 

Вот напр если апдейчу базу, не хотелось бы чтобы запросы были.. все сайты соответсвенно что на этой базе хочу заблокировать..

в начале файла думаю добавить что то вроде

if ($db_update) {
выдай сообщение и прекрати поток.
}

Т.е. не хочется else добавлять, чтоб весь html код был в скобках, т.е.


if ($db_update) {

} else {

...
<html></html>
..

}



Такое возможно? Или еще какой более хитрый подход есть? icon_smile.gif

0
 

PHP-программинг

С нами с 26.03.07
Сообщения: 821
Рейтинг: 917


Передовик Master-X (16.05.2008)
Ссылка на сообщениеДобавлено: 07/05/08 в 18:57       Ответить с цитатойцитата 

а если:
Код:

if ($db_update) {
выдай сообщение и прекрати поток.
exit();
}

3
 



С нами с 16.10.02
Сообщения: 1448
Рейтинг: 1000


Передовик Master-X (16.03.2023) Передовик Master-X (01.04.2023) Передовик Master-X (01.08.2023) Передовик Master-X (16.08.2023) Передовик Master-X (01.10.2023) Ветеран трепа Master-X (16.10.2023)
Ссылка на сообщениеДобавлено: 07/05/08 в 19:02       Ответить с цитатойцитата 

Еще короче
Код:
if($db_update)
    die('closed for maintenance and upgrades');

3
 
+


С нами с 14.02.07
Сообщения: 25
Рейтинг: 28

Ссылка на сообщениеДобавлено: 07/05/08 в 19:12       Ответить с цитатойцитата 

для этого есть ob_start но как то кривоватенько ты придумал, используй шаблоны и не будет в коде куча хтмл.

3
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 07/05/08 в 19:16       Ответить с цитатойцитата 



Ну уж как придумал icon_smile.gif Вообще спасибо всем.. шаблоны же тоже надо как то подключить, подумаю..

0
 

« ... full on ... »

С нами с 17.03.07
Сообщения: 670
Рейтинг: 1686

Ссылка на сообщениеДобавлено: 07/05/08 в 19:37       Ответить с цитатойцитата 

Не обязательно убивать все запросы и показывать пустые страницы с ошибкой, можно поиграться с LOCK TABLE в MySQL. И, возможно, апдейт базы не будет мешать выборкам.

Power of the lime madness...

3
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 07/05/08 в 20:19       Ответить с цитатойцитата 

возможно, я потом проконсультируюсь с суппортом, но как на крайний случай надо иметь наверно..

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 07/05/08 в 23:28       Ответить с цитатойцитата 

С рута в мускуле (в консоли очень желательно)

> FLUSH TABLES WITH READ LOCK;

И все. Отрабатываются последние запросы и все базы глобально локаются.
При этом, терминал не закрывать, из утилиты mysql не выходить. Там же делаем нужные административные телодвижения. В этот момент все приходящие запросы стоят в очереди со статусом "Locked" и ждут пока ты разлочишь базу. Лучше ДО этого подтюнить max_used_connections, чтобы сервер от размера очереди не помер.

Теперь в том же терминале делаем

> UNLOCK TABLES;

Все разлочивается, база работает дальше. В момент лока можно даже снимать физический дамп баз майскула.

А чтобы пых-пых корректно реагировал на эту ситуацию, надо
1. подтюнить таймаут коннекта с мускулем. Он по дефалту 60 секунд в пхп.ини Я бы его заменил на 20. Чтобы апач от ожидающих чайлдов не обосрался.
2.
Код:
$c=@mysql_connect($host,$user,$pass);
if (!is_resource($c)) {
if (mysql_errno()=={Номер ошибки "Too many connections"})
die ("Site is under maintenace, sorry");
else
die ("Could not connect to server");
}

3
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 07/05/08 в 23:40       Ответить с цитатойцитата 

пс. про всякие тюнинги это я написал если сервер более-менее нагружен. а если не большая нагрузка, а операции с базой простые и короткие, то можно просто тупо лок - работа - анлок.

3
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 08/05/08 в 02:22       Ответить с цитатойцитата 

Запросы к базе занаимают миллисекунды, что там так апдейтишь, что нужно это блокировать?
в 99% случаев, не нужно нечего, если ты грамотно продумал апдейт.

Мое имхо, проблема высосана из пальца.

3
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 08/05/08 в 17:27       Ответить с цитатойцитата 

Спасибо за подробные объяснения, и за "васосана".. icon_smile.gif

Я на всякий случай, говорю же, надо смотреть в будущее, вдруг БД будет потом очень большая icon_smile.gif

0
 



С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987

Ссылка на сообщениеДобавлено: 08/05/08 в 23:02       Ответить с цитатойцитата 

Proo писал:

Т.е. не хочется else добавлять, чтоб весь html код был в скобках, т.е.


if ($db_update) {

} else {

...
<html></html>
..

}

Как вариант:
Код:
if ($db_update) {
 
} else <<<HTML
...
<html></html>
..
HTML;

3
 



С нами с 02.01.04
Сообщения: 1246
Рейтинг: 54

Ссылка на сообщениеДобавлено: 09/05/08 в 01:18       Ответить с цитатойцитата 

всех оценил, всем спасибо! icon_smile.gif

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »