Alferov 0 Posted 2008-01-05 07:27:36 Share Posted 2008-01-05 07:27:36 Есть у вышеозначенного модуля такая нехорошая особенность: если внезапно пропадает линк с БД, то СТГ валится в корку. Хотя, должен по идее отписаться в лог и продолжать работать. Может таки найти этот баг и пофиксить его? У кого нить кроме меня такое бывает? Link to post Share on other sites
Max 0 Posted 2008-01-05 13:19:49 Share Posted 2008-01-05 13:19:49 никогда не замечал.... хотя с чево вдруг пропадёт коннект на локалхосте? Link to post Share on other sites
Alferov 0 Posted 2008-01-05 15:55:24 Author Share Posted 2008-01-05 15:55:24 Ну мало ли... бывает... можно в максимум коннектов упереться, можно мускл сервер перегрузить. Всякое может быть. Link to post Share on other sites
Max 0 Posted 2008-01-05 16:26:12 Share Posted 2008-01-05 16:26:12 тогда должен по идее отписаться в лог и продолжать работать. вот тут мне и не понятно, а как он должен продолжать работать? по мне дак он должен мирно скончаться, отослав письмецо или смс.... Link to post Share on other sites
Alferov 0 Posted 2008-01-05 18:15:15 Author Share Posted 2008-01-05 18:15:15 Не понял. А зачем же ему кончаться то? Вот как раз это то и надо исключить. Link to post Share on other sites
Max 0 Posted 2008-01-05 18:49:23 Share Posted 2008-01-05 18:49:23 Не понял. А зачем же ему кончаться то? Вот как раз это то и надо исключить. :loop: нда, а как он будет без базы работать? нет можно конечно ментальный модуль написать, который будет юзеров из воздуха делать.... Link to post Share on other sites
madf 279 Posted 2008-01-05 19:16:09 Share Posted 2008-01-05 19:16:09 На самом деле, идея здравая. Пока недоступен модуль хранилища все данные держатся памяти. Но сигнал об этом должен быть. Link to post Share on other sites
den68 0 Posted 2008-01-05 21:25:19 Share Posted 2008-01-05 21:25:19 ну не падать же ! , неприятный стиль поведения для софта Link to post Share on other sites
XoRe 0 Posted 2008-01-07 02:53:11 Share Posted 2008-01-07 02:53:11 2madf: Чтобы было "все данные держатся памяти", надо будет свой встроенный минисервер sql иметь ) Постоянная связь с БД - одно из основных условий нормальной работы биллина. Если связь с БД периодически отваливается, это уже нестандартная ситуация. И нужно нестандартное решение. В принципе можно прикрутить костылёк - скрипт, который каждую минуту проверяет доступность БД. А если БД недоступна, перезагружает БД и перезапускает биллинг. Link to post Share on other sites
egor2fsys 5 Posted 2008-01-07 06:13:20 Share Posted 2008-01-07 06:13:20 Свой SQL сервер не нужен. Биллинг при старте считывает все данные из хранилища в свою память и уже там с ними работает. Т. е. при наступлении аварийной ситуации (например обрыва связи с сервером БД) наверное необходимо записать в лог соотв. сообщение и выполнить какой нить предопределенный скрипт, который отошлет админу мыло/СМС/ударит его резиновым молотком по голове, если он спит. А данные все равно будут в памяти. Только вот не ясно что делать, когда коннект с сервером БД будет восстановлен через очень большой промежуток времени или вообще не будет установлен. Link to post Share on other sites
zulu_Radist 856 Posted 2008-01-07 06:28:19 Share Posted 2008-01-07 06:28:19 Только вот не ясно что делать, когда коннект с сервером БД будет восстановлен через очень большой промежуток времени или вообще не будет установлен Может необходимо чтобы биллинг создавал для себя внутреннее дерево действий которые он должен выполнить при появлении связи с БД. Ну а если БД так и не проснулась - жопа оперативке ))). Link to post Share on other sites
XoRe 0 Posted 2008-01-07 08:07:49 Share Posted 2008-01-07 08:07:49 А что, связь с БД часто рвется? Link to post Share on other sites
Колян 2 Posted 2008-01-07 09:42:35 Share Posted 2008-01-07 09:42:35 А что, связь с БД часто рвется? Мда... Все это делается как я понял для еще большей стабильности и надежности, это ведь биллинг, деньги! Link to post Share on other sites
Max 0 Posted 2008-01-07 10:08:08 Share Posted 2008-01-07 10:08:08 А что, связь с БД часто рвется? Мда... Все это делается как я понял для еще большей стабильности и надежности, это ведь биллинг, деньги! +1 но только если это и будет кто то реализовывать, так тока автор... Link to post Share on other sites
XoRe 0 Posted 2008-01-08 04:58:18 Share Posted 2008-01-08 04:58:18 Модуль mysql скорее всего писался с расчетом на то, что mysql связь надежная и постоянная. Если связь с БД периодически отваливается, это уже нестандартная ситуация. И нужно нестандартное решение. Если так надо, можете накодить себе функционал под это дело ) Например можно скидывать все в старый формат файлов. При появлении связи, заливать из файлов в mysql, а файлы удалять. А вообще идея продолжения полноценной работы без связи с БД - глупая, имхо. Не нужно перекладывать на биллинг ответственность за надежность БД. О надежности БД и связи с ней должен заботиться не биллинг, а сервер и админ. Если рвется связь с mysql, который запущен на той же машине, надо смотреть в сторону или железа или самого mysql. Mysql - очень гибкая штука в плане настройки и машстабирования. Одной правкой конфига можно поднять производительность в разы. Link to post Share on other sites
den68 0 Posted 2008-01-08 08:10:49 Share Posted 2008-01-08 08:10:49 вот встала задача иметь досуп админов к определенной 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> Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now