Ваш браузер?


Firefox 3-3.5
Firefox 4+
Internet Explorer 6-7
Internet Explorer 8
Internet Explorer 9
Chrome/Chromium
Safari
Opera < 10
Opera > 10
Что такое браузер?
Голосов(39)

bash.org:

Следуй за мной:

twiby

Адовый чад кутежа и трэш в комплекте

MySQL server has gone away

Пришло на ум: 9 января 2010

Обнаружилась одна интересная проблема с MySQL на этом бесплатном хостинге. У меня в левой колонке установлен курсовик валют нацбанка РБ, который считывается непосредственно с сайта.

Но как в дальнешем оказалось если есть какие-то проблемы с коннектом к сайту нацбанка, или же в ихний XML закралась ошибка - весь скрипт начинает долго и нудно тупить, и в результате появляется замечательная надпись, MySQL server has gone away типа сервер ушел на перекур :).

Решение данной проблемы - создание подключения к xml данным сервера национального банка республики Беларусь в асинхронном режиме, чтобы вся страница не ждала, пока сервер нацбанка соизволит таки ответить :).

Причина MySQL server has gone away

UPD : 14.04.2011(прошло почти полтора года) Поскольку народ постоянно заходит по этому запросу - обновляю инфу в этом посте. Причина ухода сервака - прерывание сессии MySQL при запросе - mysql просто закрывает сессию через таймаут( вероятно прохой коннекшен mysql c apache). Если конфигурировать не можете - используйте по возможности асинхронные запросы. Если можете - вероятно можно выставить timeout, я не сисадмин, точно не скажу.

Mysql не умер, он просто вышел покурить... Для начала создаем обьект xmlhttp:
//Обьект xmlHttp
var xmlhttp=createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
//ссылка на xmlhttprequest
var xmlhttp;
// If IE
  	if(window['ActiveXObject'])
  	{
   		try
   		{
   		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   		}
   		catch(e)
   		{
   		xmlhttp=false;
   		}
  	}
  	//IF not IE
  	else
        {
   		try
   		{
   		xmlhttp=new XMLHttpRequest();
   		}
   		catch(e)
   		{
   		xmlhttp=false;
   		}
  	}
  	if (!xmlhttp)
  	{
alert("Ошибка при  создании XMLHttpRequest");
  	}
  	else
  	{
  	return xmlhttp;
  	}

}
Далее создаем функцию непосредственно передающую данные:
function load_module(module){
//checking xmlhttp
// Обьект  xmlhttp не должен быть занят
if (xmlhttp['readyState'] == 4 || xmlhttp['readyState'] == 0)
   {
   // строка запроса
   xmlhttp.open("GET","ajax.php?module="+module, true);
   // фунция-приемник данных
   xmlhttp.onreadystatechange=response;
   // отправка данных
   xmlhttp.send(null);
   }
   //если сервер занят
   else
   {
alert("Server is bisy");
   }
}
И функцию обработки полученного запроса
function response(){
if (xmlhttp['readyState'] == 4 )
nbsp;  {
 //если успешно принято
   if (xmlhttp['status'] == 200)
  	{
  		document.getElementById('module_curs').innerHTML=xmlhttp['responseText'];
  	}
  	else
  	{
  	alert("Reiciving error: "+xmlhttp['statusText']);
  	}
   }
}
Принимающий код на php
header("Content-Type: text/html;charset=windows-1251");


#####################################################
$months=array("","января","февраля","март","апреля","мая","июня",
"июля","августа","сентября","октября","ноября","декабря");
$date = date("m/d/Y");

if ($_GET['module']=="curs") {


//Выполняем первый пункт, считываем страницу с курсами валют в переменную
 $file = @file_get_contents("http://www.nbrb.by/Services/XmlExRates.aspx?ondate=".$date);
//Разбираем страницу с помощью регулярок:
function get_course($code,$file){
	preg_match("#(.*?)#is", $file, $m);
	preg_match("#(.*?)#is", $m[1], $r);
	return str_replace(",", ".", $r[1]);
}
$lb_dollar = get_course(145,$file);
//Пробум вчера
if (!$lb_dollar) {
$year=date("Y");
$month=date("m");
$day=date("d");
$day=$day-1;
$date=$month."/".$day."/".$year;
$file = @file_get_contents("http://www.nbrb.by/Services/XmlExRates.aspx?ondate=".$date);

$lb_dollar = get_course(145,$file);
}
if(!$lb_dollar){
	$lb_dollar=" error ";
	$lb_euro=" error ";
	$lb_rur=" error ";
}
else {
$lb_euro = get_course(19,$file);
$lb_rur = get_course(190,$file);
}

$month=(int)$month;
$month=$months[$month];
$lb_day=$day." ".$month;


if ($lb_dollar!=" error ") {
echo "

Курс валют нацбанка РБ

USD: {$lb_dollar}
EUR: {$lb_euro}
RUR: {$lb_rur}
(на {$lb_day})
"; } }//if module==curs
Осталость только включить в хтмл блок вывода

	
		
назад   еще идеи

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



Случайная мысль:

Для глупого лба по праву необходим, в виде аргумента, сжатый кулак.
Фридрих Ницше

Полезно:

Умелые ручки

Программа для синхронизации файлов и папок Замена емкости батареи коммуникатора

MySQL

MySQL server has gone away Подключение PHP 5.3 к MySQL COUNT(*) vs LIMIT mysql the process terminated unexpectedly MySQL CREATE VIEW - создать промежуточную таблицу

FLASH

FLASH и z-index Онлайн стрелялка (2D) online shooter - бесплатно

Oracle

Oracle : TNS:could not resolve service name

Я и Mandriva

Diablo II LoD + Wine Негрузится Mandriva после установки HP(4510/4710s)

Windows Mobile

Менять ли Windows Mobile на Android? Синхронизация windows mobile c google аккаунтом

WEB

Боты в twitter - кто, зачем, почему Заработать в Sape, биржи ссылок и QA глазами девелопера TinyMCE как правильно работать с WYSIWYG редактором . Горячие клавиши в Сhrome браузере

JavaScript

Установка wmode transparent для SWFObject [object Object] when calling method: [nsIDOMEventListener::handleEvent]

PHP

Pear update - Security Error Установка PHP unit Windows Array key exists vs isset function

Windows

Вывод/запись лога консоли window

HTML/CSS

Браузер кеширует input при переходах

Android

Remote desktop - программа для удаленного рабочего стола на Android

Yii Framework

Не работает jQuery плагин после AJAX запроса Yii Framework

Git/SVN

Git: Создание tag и преключение между branch
Веб-дизайн в Минске
drcreazy © 2008-2012 all rights reserved
Информация Информация Информация Информация Информация Информация