Перейти к содержимому


Пользователь месяца
Ixman Ixman 1-й за Октябрь
Очков активности: 693 0 тем, 33 сообщения, 14 баллов репутации
Сайт: o5cat.ru
ТОП самых активных за этот месяц
  • Фотография Андрей WPMasterKZ
    #1

    Андрей WPMasterKZ (wpmaster.kz)
    Очков активности: 225 0 тем, 50 сообщений, 3 балла репутации

  • Фотография Ixman
    #2

    Ixman (o5cat.ru)
    Очков активности: 120 Вне конкурса за определение пользователя месяца

  • Фотография BLIK
    #3

    BLIK
    Очков активности: 102 Вне конкурса за определение пользователя месяца

  • Фотография ShowPrint
    #4

    ShowPrint (ShowPrint.ru)
    Очков активности: 102 Вне конкурса за определение пользователя месяца

  • Фотография yuran
    #5

    yuran (yurbol.ru)
    Очков активности: 96 0 тем, 64 сообщения, 1 балл репутации

  • Фотография Mandarin
    #6

    Mandarin
    Очков активности: 61.5 0 тем, 41 сообщение, 1 балл репутации

  • Фотография WGN
    #7

    WGN (worldgamenews.com)
    Очков активности: 45 Вне конкурса за определение пользователя месяца

  • Фотография pilatik
    #8

    pilatik
    Очков активности: 37.5 1 тема, 22 сообщения, 1 балл репутации

  • Фотография Yuliya1982
    #9

    Yuliya1982
    Очков активности: 36 1 тема, 21 сообщение, 1 балл репутации

  • Фотография pozitron123
    #10

    pozitron123
    Очков активности: 34.5 2 темы, 17 сообщений, 1 балл репутации

  • Показать весь ТОП 10
Поддержите форум! =)
Апдейты
  • Яндекс ИКС: 31.10.2018
  • Яндекс выдача: 20.11.2018
Топ 5 участников по репутации


Настраиваем подключение к базе данных

#1 ShowPrint

ShowPrint
  • Пользователь PRO
  • 3073 сообщений
  • Репутация: 844
2

Отправлено 08 August 2017 - 11:05

Всем привет!

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

Решил поделиться с народом, вдруг кому пригодится.

 

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

 

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

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-го ответа и, если таковая отсутствует, задуматься над тем, что лишней она не будет.

 

Всем пис, устойчивого стояния серваков и всего остального!


 

 

  • 2
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#2 PunPun

PunPun
  • Пользователь
  • 29 сообщений
  • Репутация: 4

Отправлено 08 August 2017 - 12:37

Расширение 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 (постоянное)) может вызывать ошибки.


  • 1

#3 ShowPrint

ShowPrint
    Topic Starter
  • Пользователь PRO
  • 3073 сообщений
  • Репутация: 844

Отправлено 08 August 2017 - 13:00

@PunPun, спасибо за замечание, обязательно приму к сведению!


  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#4 Ixman

Ixman
  • Пользователь PRO
  • 2943 сообщений
  • Репутация: 767

Отправлено 08 August 2017 - 19:41

@ShowPrint, хорошее замечание, нужно взять на заметку


  • 0


#5 ShowPrint

ShowPrint
    Topic Starter
  • Пользователь PRO
  • 3073 сообщений
  • Репутация: 844

Отправлено 09 August 2017 - 09:58

нужно взять на заметку
Замечание из разряда "must be have", но как-то не всегда мы задумываемся о явном и логичном... (((

 

Спасибо Янду за сервис "важные страницы", который помог оперативно отследить и исправить этот момент - когда бы я ещё заметил выпадение страницы из поиска, а это потенциальная денежка... )))


  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#6 Ixman

Ixman
  • Пользователь PRO
  • 2943 сообщений
  • Репутация: 767

Отправлено 09 August 2017 - 10:09

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


Сообщение отредактировал Ixman: 09 August 2017 - 10:09

  • 0


#7 ShowPrint

ShowPrint
    Topic Starter
  • Пользователь PRO
  • 3073 сообщений
  • Репутация: 844

Отправлено 09 August 2017 - 10:13

@Ixman, значит уже не зря написал  :)


  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#8 miketomlin

miketomlin
  • Пользователь
  • 515 сообщений
  • Репутация: 109

Отправлено 09 August 2017 - 12:08

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

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

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


  • 0


#9 ShowPrint

ShowPrint
    Topic Starter
  • Пользователь PRO
  • 3073 сообщений
  • Репутация: 844

Отправлено 09 August 2017 - 12:44

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

 

В реале лучше делать обработку по аналогии с 404-ой
Я уже думал об этом, что надо бы в этом случае выдавать статическую (без использования БД) страницу, но как всегда пока не до этого  :lol:

Но в файл плановых работ над сайтом этот пункт уже записан  ;)


  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#10 miketomlin

miketomlin
  • Пользователь
  • 515 сообщений
  • Репутация: 109

Отправлено 09 August 2017 - 13:13

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


Зы... увидел уточнение в скобках :) Но все же лучше не называть страницу, не использующую БД, статической.


Сообщение отредактировал miketomlin: 09 August 2017 - 13:10

  • 0


#11 ShowPrint

ShowPrint
    Topic Starter
  • Пользователь PRO
  • 3073 сообщений
  • Репутация: 844

Отправлено 09 August 2017 - 13:23

Но все же лучше не называть страницу, не использующую БД, статической.
Это вам (профи) - не к лицу, а мне (ламмеру) - простительно  :D
  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


#12 miketomlin

miketomlin
  • Пользователь
  • 515 сообщений
  • Репутация: 109

Отправлено 09 August 2017 - 13:28

P.S. Конечно не стоит забывать, что страницы ошибок – это все же особенные страницы. Например, не стоит выводить на странице 404-ой тек. адрес без его проверки/обработки, т.к. генерация 404-ой могла произойти как раз-таки из-за наличия какой-то фигни в адресе, вывод которой на страницу может быть небезопасен.


Это вам (профи) - не к лицу, а мне (ламмеру) - простительно
Да я увидел слово «статическая» и меня понесло. Ламер бы не стал уточнять в скобках, что он имеет в виду. Так что респект.
  • 2


#13 ShowPrint

ShowPrint
    Topic Starter
  • Пользователь PRO
  • 3073 сообщений
  • Репутация: 844

Отправлено 09 August 2017 - 13:35

генерация 404-ой могла произойти как раз-таки из-за наличия какой-то фигни в адресе, вывод которой на страницу может быть небезопасен.
Млин, ещё одна умная мысль, которая и в голову раньше не приходила...  :smile-thumb-up:

 

Спасибо форуму и вождю, за возможность общения с умными людьми!  :blush:


  • 0
MasterWEBS: третий дом - моё хобби и увлечение... Второй дом: работа - не меньше 12 часов в день...
Первый дом - под охраной: "Осторожно - злая жена!" (дрессировалась долго и надёжно) /*ссылку не просите - не дам!*/


robot

robot
  • Пользователь PRO
  • 2652 сообщений
  • Репутация: 85


Похожие темы

  Название темы Автор Статистика Последнее сообщение

Оформление форума – IPBSkins.ru