跟踪由单个 PHP 脚本调用引起的 Postgres 数据库 activity
Track Postgres database activity caused by a single PHP script invocation
是否可以从头开始跟踪数据库 activity,直到 PHP 脚本调用结束?
例如,假设我有一个脚本可以为数据库中的用户创建一条新记录。您填写表格,点击提交并提供所有数据有效脚本继续影响多个 tables 插入数据。
脚本向主用户插入数据table; (name, address, tel, etc...) 被返回一个新的 userid,然后也添加一个记录到部门 table (userid, departmentid) 和工资金额到工资单 table (userid , 工资).
有没有办法查看受脚本影响的所有 table、它们的使用顺序以及单次调用传递给它们的数据?
额外信息:我将 Ubuntu 14.04 LTS 与 Apache 2.4.7、PHP 5.5.9 和 Postgres 9.3.5 一起使用。我是这台机器的唯一用户;一切都将在本地运行。
最终我想设置脚本运行并观察它在 Postgres 数据库中的作用。
谢谢。
您可以在服务器端执行此操作,方法是设置 log_statement = 'all'
并设置合适的 log_line_prefix
以包括后端进程 ID、事务 ID 等。
您可能会发现在客户端连接字符串中设置 application_name
或在脚本中设置 SET application_name = 'blah'
很有用,这样在日志中也更容易找到。
请注意,您可以使用 ALTER USER blah SET log_statement = 'all'
在每个用户的基础上设置 log_statement
,或者使用 ALTER DATABASE blah SET log_statement = 'all'
在每个数据库的基础上设置 log_statement
。您可以稍后使用 ALTER ... RESET log_statement
.
清除设置
使用 CSV 格式的日志也更容易。
是否可以从头开始跟踪数据库 activity,直到 PHP 脚本调用结束?
例如,假设我有一个脚本可以为数据库中的用户创建一条新记录。您填写表格,点击提交并提供所有数据有效脚本继续影响多个 tables 插入数据。
脚本向主用户插入数据table; (name, address, tel, etc...) 被返回一个新的 userid,然后也添加一个记录到部门 table (userid, departmentid) 和工资金额到工资单 table (userid , 工资).
有没有办法查看受脚本影响的所有 table、它们的使用顺序以及单次调用传递给它们的数据?
额外信息:我将 Ubuntu 14.04 LTS 与 Apache 2.4.7、PHP 5.5.9 和 Postgres 9.3.5 一起使用。我是这台机器的唯一用户;一切都将在本地运行。
最终我想设置脚本运行并观察它在 Postgres 数据库中的作用。
谢谢。
您可以在服务器端执行此操作,方法是设置 log_statement = 'all'
并设置合适的 log_line_prefix
以包括后端进程 ID、事务 ID 等。
您可能会发现在客户端连接字符串中设置 application_name
或在脚本中设置 SET application_name = 'blah'
很有用,这样在日志中也更容易找到。
请注意,您可以使用 ALTER USER blah SET log_statement = 'all'
在每个用户的基础上设置 log_statement
,或者使用 ALTER DATABASE blah SET log_statement = 'all'
在每个数据库的基础上设置 log_statement
。您可以稍后使用 ALTER ... RESET log_statement
.
使用 CSV 格式的日志也更容易。