|
|
|
| Привет всем !
Столкнулся с такой вот проблемой- БД находится на сервере в соседнем городе, тот комп переодически не отвечает (соединение телнет по порту 3306 не подключается), у меня вместо графиков (JpGraph) пустой экран. Задача стоит раз в 15 минут запросить с сервера некие данные, обработать их и выдать в виде графиков.
Структура скрипта (очень примерно):
//-------------------
index.php
<img src=img.php>
//-------------------
img.php
include('sql_connect'); //коннектимся
include(coun.php); //считаем
include(draw.php); // рисуем
|
Вопрос: как бы сделать так что когда нет коннекта к БД, то не перерисовывать графики, но обращаться начинать раз в 1-2 минуты до того момента когда коннект установится, отрисовать графики и потом уже обратиться через 15 минут ? Я полагаю что вызов sql_connect.php нужно перенести в index.php, проанализировать возвращаемое значение а как менять рефреши страниц ?
Спасибо. | |
|
|
|
|
|
|
|
для: larush2
(21.02.2011 в 12:01)
| | функция mysql_connect возвращает объект, если соединение установлено или false в случае ошибки, т.е судя по всему в sql_connect пишем
<?php
if (!$connect = mysql_connect(...)) {
// завершаем работу скрипта
exit();
}
|
| |
|
|
|
|
|
|
|
для: psychomc
(21.02.2011 в 12:06)
| | уточняю, мне нужно поставить рефреш страницы:
1. Нормальный режим- обновление страницы раз в 15 минут
2. Если нет коннекта (я могу проанализировать) то раз в 1 минуту | |
|
|
|
|
|
|
|
для: larush2
(21.02.2011 в 12:14)
| | сейчас-то Вы интервал рефреша как-то ставите? | |
|
|
|
|
|
|
|
для: Trianon
(21.02.2011 в 12:15)
| | пока никак- работаю над графиками. Но полагаю что Мета Refresh=90 | |
|
|
|
|
|
|
|
для: larush2
(21.02.2011 в 12:46)
| | Полагаю достаточно просто Refresh, только не 90, а 900, очевидно. 900 и 60. | |
|
|
|
|
|
|
|
для: Trianon
(21.02.2011 в 13:24)
| | да я понимаю НО !!!
- в 1 файле стоит тэг IMG, а не вызов процедуры, если я ДО тэга подключусь к БД, то в вызываемом файле подключения уже не видно ! Напрашивается вывод- делать подключение до тэга и в самом файле вывода графиков- уже некрасиво.
- По рефрешу страничка обновляется- стираются графики, доходит очередь до проверки коннекта, а его нет- вторая некрасивость.
Стал уже подумывать насчет Ajаxa, но не имею ни малейшего опыта... | |
|
|
|
|
|
|
|
для: larush2
(21.02.2011 в 13:32)
| | Можно так
Данные графика загнать в буфер
если нет конекта --> показываем то, что в буфере
есть коннект -- >перезаписываем данные в буфере | |
|
|
|
|
|
|
|
для: larush2
(21.02.2011 в 13:32)
| | можно построить картинку (и сохранить в файл) в скрипте, который формирует тег <img src=сохр-файл > и поле заголовка с refresh'ем. | |
|
|
|
|
|
|
|
для: Trianon
(21.02.2011 в 15:44)
| | Кстати говоря, очень полезная утилита munin примерно так и действует. Через какой-то промежуток времени складывает отчёты в виде графических файлов в определённую папку, которую можно настроить как virtual host (или его аналог) и смотреть через браузер в удобной форме (html он тоже генерирует). | |
|
|
|
|
|
|
|
для: larush2
(21.02.2011 в 13:32)
| | index.php может выглядеть так:
<html>
<head>
<?php
if (!$connect = mysql_connect(...)) {
exit('<meta http-equiv="refresh" content="60; URL=адрес"></head><body><p>Нет коннекта</body></html>');
}
?>
<meta http-equiv="refresh" content="900; URL=адрес">
</head>
<body>
<img src=img.php>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: kosta_in_net
(21.02.2011 в 20:33)
| | Попробую консолидировать:
1 Картинки буду сохранять на диске с одинаковым именем, тогда в теле документа ссылка не будет меняться.
2 Отключу анализ коннекта в основном документе, refresh поставлю в 5 минут - отрисовка графиков займет пару секунд, лишний раз обновления никто и не заметит, а если не было коннекта то завдержка будет 20 а не 30 минут :-)
3 Вызывать отдельно скрипт коннекта и переформирования графиков. Можно даже виндовыми средствами. В связи с этим пару вопросов:
- как закрывать окно выполнения скрипта ? Думаю что в теле документа что-то надо написать
- как уменьшить время ожидания коннекта для данного скрипта до 1-2 сек ? | |
|
|
|