Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Лог sql-запросов определенных пользователей

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
alden
Отправлено: 06 Февраля, 2020 - 12:21:09
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2020  


Помог: 0 раз(а)




Подключение создается к базе с использованием MysqliDb http://github[dot]com/joshcam/PHP-My[dot][dot][dot]i-Database-Class
CODE (htmlphp):
скопировать код в буфер обмена
  1. $sqlConnect =  mysqli_connect($sql_db_host, $sql_db_user, $sql_db_pass, $sql_db_name, 3306);

Как лучше сделать логгирование sql-запросов от авторизированного пользователя который относится к определенной группе пользователя? Получение признака отношения залогиненного пользователя к целевой группе доступно в момент создания объекта подключения к БД $sqlConnect.
 
 Top
LIME
Отправлено: 06 Февраля, 2020 - 12:35:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Для такого хорошо бы всетаки иметь класс обвязку для работы с бд. Но видимо его нет, иначе вопроса бы не возникло.
Значит остается или рефакторинг или логирование средствами субд. Можно включать/отключать general_log в рантайме сразу после создания соединения.
CODE (SQL):
скопировать код в буфер обмена
  1. SET GLOBAL general_log = 'ON';
  2. SET GLOBAL general_log = 'OFF';

для этого его возможно надо сначала настроить в конфиге
CODE (htmlphp):
скопировать код в буфер обмена
  1. general_log_file        = /var/log/mysql/mysql.log
  2. general_log             = 1
 
 Top
alden
Отправлено: 06 Февраля, 2020 - 13:56:55
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Февр. 2020  


Помог: 0 раз(а)




[quote=LIME][/quote]
LIME пишет:
SET GLOBAL general_log = 'ON';
SET GLOBAL general_log = 'OFF';


general_log действительно подходящий способ логгирования, но он логгирует все запросы без идентификатора юзера который их формирует. А мне нужно в логгируемых запросах как то глобально записывать в лог id юзера который формирует эти запросы, чтобы можно было из general_log сделать выборку всех запросов по определенному id. По умолчанию в general_log фигурирует id юзера БД, но мне нужно чтобы был id именно юзера из таблицы юзеров который залогинен и формирует запросы в БД.
 
 Top
LIME
Отправлено: 06 Февраля, 2020 - 14:00:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




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

у всех запросов одной сессии(одного соединения) будет в логах одинаковый номер сессии(целое число) в начале каждой записи
таким образом можно их распарсивать зная что в начале будет запрос с id юзера
и/или всякой другой служебной инфой
(Добавление)
можно добавить в пустышку маркер чтоб облегчить парсинг
(Добавление)
костыли имеют свойство обрастать новыми костылями со временем
яб рефакторнул код пока это относительно не сложно
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с СУБД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB