X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Настраиваем подключение к базе данных
ShowPrint
ShowPrint
Topic Starter сообщение 8.8.2017, 12:05; Ответить: ShowPrint
Сообщение #1


Всем привет!
Вчера Янд выкинул одну из моих страниц из поиска, переписка с Платонами ясно дело показала что "сам дурак".
Решил поделиться с народом, вдруг кому пригодится.

Причиной удаления из индекса послужил какой-то временный глюк при коннекте к БД. Мне как-то в голову не приходило, что возможна ситуация с работающим сервером и отсутствием доступа к БД, посему она и не была "обыграна". Оказывается возможно и такое, соответственно надо предусмотреть и такой вариант.

При изначальном написании шаблона коннект к БД был реализован следующим образом:

function myDBConnect(){
$_Link=@mysql_pconnect("localhost","user_name","user_password");
if($_Link&&mysql_select_db("name_database")){
mysql_query("SET CHARACTER SET cp1251_utf8");
return($_Link);
}
return(FALSE);
}

myDBConnect() or die("Что-то пошло не так.<Br>Воспользуйтесь другим нашим сайтом: <a href='http://www.OtherSite.ru'>Резервный сайт</a>");

Собственно заглушка "что-то пошло не так" реализована для того чтоб "не терять посетителя" и дать ему возможность получить информацию на другом сайте, то есть всё-равно прийти ко мне )))
В ситуации с пользователем это работает, но при посещении роботом Яндекса привело к негативным последствиям - скушав одновременно две страницы (в момент глюка доступа к БД) робот получил одинаковое содержание "заглушки" и посчитав страницы дублями выкинул их из индекса.

По результатам переписки с Платонами был несколько изменём коннект к БД:

function myDBConnect(){
$_Link=@mysql_pconnect("localhost","user_name","user_password");
if($_Link&&mysql_select_db("name_database")){
mysql_query("SET CHARACTER SET cp1251_utf8");
return($_Link);
}
return(FALSE);
}
if(!myDBConnect()){
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 3600');
die('Что-то пошло не так.<Br>Воспользуйтесь другим нашим сайтом: <a href="http://www.OtherSite.ru">Резервный сайт</a>');
}

Собственно добавленные header выдают 503-й ответ сервера http и говорят роботу "зайди ещё раз через часок". Со слов Платонов в этой ситуации робот должен оставлять страницы в индексе и не должен выбрасывать их из поиска.

Понятно что это будет выручать в случаях кратковременных траблов и не спасёт если сервак будет лежать долгое время или часто, но чтоб такого не случалось надо выбирать нормальный хостинг )))

Советую проверить свои сайты на предмет настройки отдачи 503-го ответа и, если таковая отсутствует, задуматься над тем, что лишней она не будет.

Всем пис, устойчивого стояния серваков и всего остального!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
PunPun
PunPun
сообщение 8.8.2017, 13:37; Ответить: PunPun
Сообщение #2


Расширение mysql и его функции mysql_pconnect считаются уже устаревшими. Вам бы обновиться хотя бы до mysqli

function myDBConnect() {
$link = mysqli_connect("localhost", "root", "", "zakaz.cc");
if(!mysqli_connect_errno()) {
mysqli_query($link, "SET CHARACTER SET utf8");
return($link);
}
return false;
}
if(!($db = myDBConnect())) {
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 3600');
die('Что-то пошло не так.<Br>Воспользуйтесь другим нашим сайтом: <a href="http://www.OtherSite.ru">Резервный сайт</a>');
}
$result = mysqli_query($db, "SELECT * FROM post");
$row = mysqli_fetch_row($result);
print_r($row);

Соответственно и везде где есть mysql нужно заменить на функции mysqli. Соединение с p (mysql_pconnect (постоянное)) может вызывать ошибки.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
Topic Starter сообщение 8.8.2017, 14:00; Ответить: ShowPrint
Сообщение #3


PunPun, спасибо за замечание, обязательно приму к сведению!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
сообщение 8.8.2017, 20:41; Ответить: ixman
Сообщение #4


ShowPrint, хорошее замечание, нужно взять на заметку
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
Topic Starter сообщение 9.8.2017, 10:58; Ответить: ShowPrint
Сообщение #5


(Ixman @ 8.8.2017, 23:41) *
нужно взять на заметку
Замечание из разряда "must be have", но как-то не всегда мы задумываемся о явном и логичном... (((

Спасибо Янду за сервис "важные страницы", который помог оперативно отследить и исправить этот момент - когда бы я ещё заметил выпадение страницы из поиска, а это потенциальная денежка... )))
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ixman
ixman
сообщение 9.8.2017, 11:09; Ответить: ixman
Сообщение #6


ShowPrint, да уже применил идею к проекту, который на данный момент дорабатываю. Потом и на свои скрипты надо внедрить


Сообщение отредактировал Ixman - 9.8.2017, 11:09
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
Topic Starter сообщение 9.8.2017, 11:13; Ответить: ShowPrint
Сообщение #7


Ixman, значит уже не зря написал  :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 9.8.2017, 13:08; Ответить: miketomlin
Сообщение #8


503-яя – практически стандартная реакция на ошибки БД. die/or die – это отладочная техника. В реале лучше делать обработку по аналогии с 404-ой. Можно даже один и тот же шаблон использовать. Гляньте хотя бы на код из моей последней статьи. Подключение делается аналогично:

if ($link=mysqli_open()) { ... }
else error(503);

Только не нужно считать пустую выборку подобной ошибкой. Это либо 404-яя, либо даже 200-ая с сообщением вроде «Нет элементов».


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ShowPrint
ShowPrint
Topic Starter сообщение 9.8.2017, 13:44; Ответить: ShowPrint
Сообщение #9


miketomlin, давно тебя не было видно, тёзка  :)

(miketomlin @ 9.8.2017, 16:08) *
В реале лучше делать обработку по аналогии с 404-ой
Я уже думал об этом, что надо бы в этом случае выдавать статическую (без использования БД) страницу, но как всегда пока не до этого  :lol:
Но в файл плановых работ над сайтом этот пункт уже записан  ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
miketomlin
miketomlin
сообщение 9.8.2017, 14:13; Ответить: miketomlin
Сообщение #10


Статическую – это частный случай, если вы именно так формируете страницы ошибок. В общем же это практически такая же страница, как и все остальные, только со спец. статусом и заголовками вроде Retry-After. Т.е. она собирается из кусков, может иметь вариативность, например соотв. сообщение на каждый/опред. вид ошибки. Обвес осн. контента в шаблоне, естественно, должен браться из кеша, ну или по крайней мере не из БД, либо должен использоваться т.н. «бедный» шаблон с максимумом статика. Иными словами, страница динамическая, но не использующая БД.
Зы... увидел уточнение в скобках :) Но все же лучше не называть страницу, не использующую БД, статической.


Сообщение отредактировал miketomlin - 9.8.2017, 14:10


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
14 yaroslav89 6630 13.3.2024, 23:16
автор: spoyer_ru
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыБезанкорный прогон по базе 1600 000 сайтов из DMOZ
44 aleggator 13437 10.3.2024, 18:29
автор: kuprum
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыСтатейное продвижение ваших сайтов по качественной базе с тИЦ
тИЦ 10+
236 Intersect 257191 6.3.2024, 14:40
автор: ArchiDOM
Открытая тема (нет новых ответов) Нужна рассылка по емаил базе сео-студий
0 kasey7 622 2.3.2024, 23:13
автор: kasey7
Открытая тема (нет новых ответов) ВНИМАНИЕ: 77.me - Crypto processing и High risk processing для вашего бизнеса.Подключение за час!
0 77_me 1198 14.2.2024, 19:09
автор: 77_me


 



RSS Текстовая версия Сейчас: 29.3.2024, 13:08
Дизайн