Можно ли отслеживать активность базы данных с начала, до конца вызова сценария PHP?
Например, допустим, у меня есть скрипт, который создает новую запись для пользователя в базе данных. Вы заполняете форму, нажимаете «Подтвердить» и при условии, что все данные действительны, сценарий воздействует на несколько таблиц, вставляя данные.
Скрипт вставляет данные в основную пользовательскую таблицу; (имя, адрес, телефон и т. д.) возвращается новый ИД пользователя, а затем также добавляется запись в таблицу отдела (ИД пользователя, отправление) и сумма зарплаты в таблицу заработной платы (ИД пользователя, зарплата).
Есть ли способ увидеть все таблицы, на которые повлиял сценарий, порядок их использования и данные, переданные им для одного вызова?
Дополнительная информация: я использую Ubuntu 14.04 LTS с Apache 2.4.7, PHP 5.5.9 и Postgres 9.3.5. Я единственный пользователь этой машины; Все будет работать локально.
В конечном итоге я хочу запустить скрипт и посмотреть, что он делает в БД Postgres.
Спасибо.
Вы можете сделать это на стороне сервера, установив log_statement = 'all'
и установка подходящего log_line_prefix
включить идентификатор внутреннего процесса, идентификатор транзакции и т. д.
Вы можете найти полезным установить application_name
в строке подключения клиента или SET application_name = 'blah'
в вашем скрипте, так что его легче найти и в логах.
Обратите внимание, что вы можете установить log_statement
для каждого пользователя с ALTER USER blah SET log_statement = 'all'
или для каждой базы данных с ALTER DATABASE blah SET log_statement = 'all'
, Вы можете очистить настройки позже с ALTER ... RESET log_statement
,
Использование журналов формата CSV также облегчает эту задачу.
Других решений пока нет …