Биллинговая система Nodeny
02 Мая 2024, 01:23:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]
  Печать  
Автор Тема: Изменение допданных для всех юзеров одновременно  (Прочитано 5226 раз)
Cell
Модератор
Спец
*****

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« : 27 Марта 2010, 02:40:51 »

Хе хе
Столкнулся я с проблемой ), стояла элементарная казалось бы  задача перевести допполе _control со значения "нет" на значение "да" для всех 2000 пользователей одновременно.
На самом деле..... проблема это мягко говоря. Казалось бы ничего сложного да? простым запросиком да? я тоже так подумал ))) сначала ))) в результате родился совершенно безумный скрипт на php а заодно нашелся баг в модуле графиков, который проявляется интересным образом: так как с некоторых пор шаблонов допданных имеется два штука, то если юзеру сохранить (изменить, добавить)  что-то в шаблоне "Адрес", то графики после этого идут курить и в процессе заполнения баз и в процессе отображения юзерам. Если модуль используется для целей контроля - беда не большая, достаточно создать новую ревизию в шаблоне "техданные", но если кому понадобится - есть фикс.
По существу темы: интересно было бы узнать, как автор планировал включить всем smtp а то тут один знакомый рассказывал что у него в абонотделе человечек сидит и 5000 карточек руками перебирает?
Записан
blackjack
NoDeny
Старожил
*

Карма: 24
Offline Offline

Сообщений: 352


Просмотр профиля Email
« Ответ #1 : 27 Марта 2010, 08:20:07 »

я вважаю що ідея з додатковим даними хороша, але реалізація паскудна.
Записан
versus
Администратор
Спец
*****

Карма: 21
Offline Offline

Сообщений: 845


44306843
Просмотр профиля WWW Email
« Ответ #2 : 27 Марта 2010, 12:04:31 »

Всем smtp  включать это капец мозга. вам свой белый айпи каждый день из стоплистов выгребать не накладно будет?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #3 : 27 Марта 2010, 12:22:54 »

Ну, а я типа не говорил, что концепция допполей будет переделываться? Или надо пережевывать этот момент?
Записан
goletsa
NoDeny
Спец
*

Карма: 21
Offline Offline

Сообщений: 973


Просмотр профиля
« Ответ #4 : 27 Марта 2010, 12:31:35 »

Всем smtp  включать это капец мозга. вам свой белый айпи каждый день из стоплистов выгребать не накладно будет?
Да тогда проще в конфиге саттелиты снять галку с блокировки smtp чем ставить разрешено всем.
Записан
Cell
Модератор
Спец
*****

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #5 : 27 Марта 2010, 14:00:45 »

Всем smtp  включать это капец мозга. вам свой белый айпи каждый день из стоплистов выгребать не накладно будет?
На самом деле, чаще всего в блэклисты попадают адреса, не имеющие в бекрезолве вменяемого MX (т.е. почтовика), а также впервые встречающиеся почтовики. Прошу заметить - это наиболее часто встречающаяся причина!!!
Хочу заметить, что закрывать какие-то порты (тем более почтовые) - это не совсем правильная задача провайдера. Но я согласен, проще прикрыть 25 порт и открыть его тем кому нужно, сам так делаю, не потому что это правильно, а потому что ТАК ПРОЩЕ ЖИТЬ.
Как убить таблицу, отвечающую за эту блокировку я знаю, и прекрасно это могу сделать. Вопрос как раз не в этом, а пример был приведен, чтобы проиллюстрировать проблему, которая существует в организации допполей. Фактически же было необходимо подключить прорисовку траффика в моем модуле для всех юзеров сети. Повторюсь, что пришлось просидеть два часа отлаживая самописный скрипт, заточенный под эту задачу. Даже не знаю, насколько правильно все получилось с этими ревизиями, но все заработало вроде.
Записан
Cell
Модератор
Спец
*****

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #6 : 27 Марта 2010, 14:07:18 »

Ну, а я типа не говорил, что концепция допполей будет переделываться? Или надо пережевывать этот момент?
Пережевывать не надо, просто задачи стоят сегодня и решать их надо сегодня а  не когда-то в будущем. При всем при этом хотелось бы иметь какую-то обратную совместимость чтобы под "новую концепцию" не пришлось переделывать большинство, если не все модули (особенно с учетом того, что очень приочень много туда уже завязано), как пример можно привести модуль договора. Все классно, как бы.... и разработчик даже может под новую "концепцию" переделает его, но многие очень серьезно вносили туда свои изменения.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #7 : 27 Марта 2010, 14:15:33 »

Я попробую в 50ю версию загнать эту новую концепцию. Поле revision будет отсутствовать, просто вычеркните его из sql-запросов
Записан
blackjack
NoDeny
Старожил
*

Карма: 24
Offline Offline

Сообщений: 352


Просмотр профиля Email
« Ответ #8 : 27 Марта 2010, 16:53:47 »

та ладно, поправим пару рядків коду тай по всьому. Просто я от стикнувся з проблемо теж. Наприклад, треба змінити IP адреси клієнтам на цілий будинок в зв'язку з сегментаціюєю мережі. Так виявляється шо треба або вручну перебивати, або писати "мега скріпт/запит" для такої задачі. Ну незручно короче.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #9 : 28 Марта 2010, 01:28:35 »

та ладно, поправим пару рядків коду тай по всьому. Просто я от стикнувся з проблемо теж. Наприклад, треба змінити IP адреси клієнтам на цілий будинок в зв'язку з сегментаціюєю мережі. Так виявляється шо треба або вручну перебивати, або писати "мега скріпт/запит" для такої задачі. Ну незручно короче.
Т.е. ты хочешь один интеллектуальный sql-запрос который выдаст определенным клиентам Ip-адреса по определенным законам? Следующим шагом будет sql-запрос, который будет заменять nodeny.pl
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #10 : 28 Марта 2010, 01:45:23 »

Эта информация для программистов.

Сделал предварительные изменения по концепции допполей в 50й версии.

Сейчас dopvalues в таком виде:
CREATE TABLE IF NOT EXISTS `dopvalues` (
  `parent_id` int(10) unsigned NOT NULL,
  `dopfield_id` smallint(5) unsigned NOT NULL,
  `field_value` text NOT NULL,
  UNIQUE KEY `parent_id_2` (`parent_id`,`dopfield_id`),
  KEY `parent_id` (`parent_id`)
) ENGINE=InnoDB;

т.е. минимум информации: чьи данные, с каким полем связаны, значения данных. Уменьшение объема таблицы, с которой интенсивно идет работа ессно приведет только к ускорению. Заметили, что нет инфы по времени изменения/кто изменил/номер ревизии?

Механизм такой. Есть еще табличка old_dopvalues. При сохранении данных, инфа записывается сначала в нее. Потом вызывается процедура замещения данных в  dopvalues на новые. Процедура проверяет корректность данных (пока только отсутствие дубликатов в полях - я включил флаг `уникальное поле` уже в этой версии) и если есть проблема - данные не переносятся. Вытащить эти данные, как и любые ранее записанные, можно из old_dopvalues по ревизии. Важно то, что вам вообще не нужно знать об этой таблице и в частности про ревизии. Это я привел для лучшего понимания процесса.

Все, что вам требуется при получении данных клиента, так это выполнить такой запрос:

select * from dopdata where parent_type=0 and parent_id= id_клиента

Кстати, в 52й версии нет и parent_type (сейчас это поле указывает чьи данные - оборудования или клиента) - там оборудование логически не отделяется от клиента, как и от любого другого объекта. Это тоже для понимания процесса.


Сейчас я прохожусь по всем скриптам и пытаюсь менять sql-запросы под новую концепцию. Основная часть сделана. Но остались мелочи + обязательное тестирование, которое придется делать вам, особо активные граждане, заставившие меня делать изменения в старых (для меня) версиях.

Еще несколько нюансов. Шаблон (template_num), указывающий на группу данных (адрес, техданные и т.д.) стал менее нужен вам - ранее, каждая уникальная ревизия хранила только один шаблон. Т.е. чтобы получить данные по всем шаблонам, нужно было пройтись по нескольким ревизиям. Сейчас все данные в куче и выбираются за один sql-запрос. Вот этот момент положительно отразился на nomake.pl - теперь можно не юзать тег template.

Тип таблицы, как вы заметили, InnoDB - постепенно переходим на транзакции
Записан
blackjack
NoDeny
Старожил
*

Карма: 24
Offline Offline

Сообщений: 352


Просмотр профиля Email
« Ответ #11 : 28 Марта 2010, 16:12:55 »

Т.е. ты хочешь один интеллектуальный sql-запрос который выдаст определенным клиентам Ip-адреса по определенным законам?

коментр невірний. Я хочу на вхід скрипту передати номер будинку, назву вулиці, нову підмережу, а скірпт має змінити на основі цих даних IР адреси на адреси із вказаної підмережі.
Напрклад, є адреси вул.Космонавтів 5,7,9,11,13 там зараз 89 абонентів, проводимо сегментацію мережі, одне волокно на будинок, відповідно одна підмережа на один будинок і їм треба змінити адреси з 172.16.35.Х/24 на 172.16.36-39.Х/24.  Ви пропонуєте близько 80 разів вибирати кожного клієнта і мінятии йому адрес? Чи я к в такій ситуації бути?

Следующим шагом будет sql-запрос, который будет заменять nodeny.pl
Только ненадо мне сейчас раасказывать о кнопке сделать все заебись.
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!