Перейти до

Возможность доработки модуля Mysql (0.67)


Рекомендованные сообщения

Есть у вышеозначенного модуля такая нехорошая особенность: если внезапно пропадает линк с БД, то СТГ валится в корку. Хотя, должен по идее отписаться в лог и продолжать работать.

Может таки найти этот баг и пофиксить его?

У кого нить кроме меня такое бывает?

Ссылка на сообщение
Поделиться на других сайтах

тогда

должен по идее отписаться в лог и продолжать работать.

вот тут мне и не понятно, а как он должен продолжать работать?

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

Ссылка на сообщение
Поделиться на других сайтах
Не понял. А зачем же ему кончаться то? Вот как раз это то и надо исключить.

:loop:

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

Ссылка на сообщение
Поделиться на других сайтах

На самом деле, идея здравая. Пока недоступен модуль хранилища все данные держатся памяти.

Но сигнал об этом должен быть.

Ссылка на сообщение
Поделиться на других сайтах

2madf:

Чтобы было "все данные держатся памяти", надо будет свой встроенный минисервер sql иметь )

Постоянная связь с БД - одно из основных условий нормальной работы биллина.

Если связь с БД периодически отваливается, это уже нестандартная ситуация.

И нужно нестандартное решение.

 

В принципе можно прикрутить костылёк - скрипт, который каждую минуту проверяет доступность БД.

А если БД недоступна, перезагружает БД и перезапускает биллинг.

Ссылка на сообщение
Поделиться на других сайтах

Свой SQL сервер не нужен. Биллинг при старте считывает все данные из хранилища в свою память и уже там с ними работает. Т. е. при наступлении аварийной ситуации (например обрыва связи с сервером БД) наверное необходимо записать в лог соотв. сообщение и выполнить какой нить предопределенный скрипт, который отошлет админу мыло/СМС/ударит его резиновым молотком по голове, если он спит. А данные все равно будут в памяти. Только вот не ясно что делать, когда коннект с сервером БД будет восстановлен через очень большой промежуток времени или вообще не будет установлен.

Ссылка на сообщение
Поделиться на других сайтах
Только вот не ясно что делать, когда коннект с сервером БД будет восстановлен через очень большой промежуток времени или вообще не будет установлен

Может необходимо чтобы биллинг создавал для себя внутреннее дерево действий которые он должен выполнить при появлении связи с БД. Ну а если БД так и не проснулась - жопа оперативке ))).

Ссылка на сообщение
Поделиться на других сайтах
А что, связь с БД часто рвется?

Мда... Все это делается как я понял для еще большей стабильности и надежности, это ведь биллинг, деньги!

Ссылка на сообщение
Поделиться на других сайтах
А что, связь с БД часто рвется?

Мда... Все это делается как я понял для еще большей стабильности и надежности, это ведь биллинг, деньги!

+1

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

Ссылка на сообщение
Поделиться на других сайтах

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

Если связь с БД периодически отваливается, это уже нестандартная ситуация.

И нужно нестандартное решение.

Если так надо, можете накодить себе функционал под это дело )

Например можно скидывать все в старый формат файлов.

При появлении связи, заливать из файлов в mysql, а файлы удалять.

 

А вообще идея продолжения полноценной работы без связи с БД - глупая, имхо.

Не нужно перекладывать на биллинг ответственность за надежность БД.

О надежности БД и связи с ней должен заботиться не биллинг, а сервер и админ.

Если рвется связь с mysql, который запущен на той же машине, надо смотреть в сторону или железа или самого mysql.

Mysql - очень гибкая штука в плане настройки и машстабирования.

Одной правкой конфига можно поднять производительность в разы.

Ссылка на сообщение
Поделиться на других сайтах

вот встала задача иметь досуп админов к определенной web директории с теми-же паролями что и в стг, быстренько наваяли патч, может кому сгодиться:

 

--- mysql_store.cpp.ORIG        2008-01-08 09:11:16.000000000 +0300
+++ mysql_store.cpp     2008-01-08 09:11:30.000000000 +0300
@@ -324,6 +324,11 @@
       sprintf(qbuf,"CREATE TABLE admins (login VARCHAR(40) DEFAULT '' PRIMARY KEY,"\
-               "password VARCHAR(150) DEFAULT '*',ChgConf TINYINT DEFAULT 0,"\
-               "ChgPassword TINYINT DEFAULT 0,ChgStat TINYINT DEFAULT 0,"\
-               "ChgCash TINYINT DEFAULT 0,UsrAddDel TINYINT DEFAULT 0,"\
-               "ChgTariff TINYINT DEFAULT 0,ChgAdmin TINYINT DEFAULT 0)");
+               "password VARCHAR(150) DEFAULT '*',"\
+               "password_text VARCHAR(150) DEFAULT '*',"\
+               "ChgConf TINYINT DEFAULT 0,"\
+               "ChgPassword TINYINT DEFAULT 0,"\
+               "ChgStat TINYINT DEFAULT 0,"\
+               "ChgCash TINYINT DEFAULT 0,"\
+               "UsrAddDel TINYINT DEFAULT 0,"\
+               "ChgTariff TINYINT DEFAULT 0,"\
+               "ChgAdmin TINYINT DEFAULT 0)");

@@ -339,2 +344,3 @@
               "password='geahonjehjfofnhammefahbbbfbmpkmkmmefahbbbfbmpkmkmmefahbbbfbmpkmkaa',"\
+               "password_text='',"\
               "ChgConf=1,ChgPassword=1,ChgStat=1,ChgCash=1,UsrAddDel=1,ChgTariff=1,ChgAdmin=1");
@@ -1195,6 +1201,7 @@

-sprintf(qbuf,"UPDATE admins SET password='%s', ChgConf=%d, ChgPassword=%d, "\
+sprintf(qbuf,"UPDATE admins SET password='%s', password_text=PASSWORD('%s'), ChgConf=%d, ChgPassword=%d, "\
       "ChgStat=%d, ChgCash=%d, UsrAddDel=%d, ChgTariff=%d, ChgAdmin=%d "\
-       "WHERE login='%s' LIMIT 1",
+       "WHERE login='%s' LIMIT 1",
       passwordE,
+       adminPass,
       ac.priv.userConf,
@@ -1231,3 +1238,3 @@
-sprintf(qbuf,"SELECT * FROM admins WHERE login='%s' LIMIT 1", login.c_str());
+sprintf(qbuf,"SELECT login,password,ChgConf,ChgPassword,ChgStat,ChgCash,UsrAddDel,ChgTariff,ChgAdmin FROM admins WHERE login='%s' LIMIT 1", login.c_str());
-
+
if(MysqlGetQuery(qbuf,sock))

 

в httpd.conf соответственно:

 

<Directory "/Clients/www/admstat/homeuser">
   AllowOverride None
   Options FollowSymLinks ExecCGI
   Order allow,deny
   Allow from 127.0.0.1 192.168.xxx.xxx./24
   #
   AuthMySQLHost 192.168.xxx.xxx
   AuthMySQLUser base-login
   AuthMySQLPassword base-password
   AuthMySQLDB homeuserstg
   AuthMySQLUserTable admins
   AuthMySQLNoPasswd Off
   AuthMySQLPwEncryption scrambled
   AuthMySQLPasswordField password_text
   AuthMySQLNameField login
   AuthMySQLAuthoritative On
   #
   AuthName "Admin's stuff STG authentication"
   AuthType Basic
   <Limit GET>
       require valid-user
   </Limit>
</Directory>

Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...