Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
跟踪单个PHP脚本调用导致的Postgres数据库活动_Php_Logging_Monitoring_Psql_Postgresql 9.3 - Fatal编程技术网

跟踪单个PHP脚本调用导致的Postgres数据库活动

跟踪单个PHP脚本调用导致的Postgres数据库活动,php,logging,monitoring,psql,postgresql-9.3,Php,Logging,Monitoring,Psql,Postgresql 9.3,是否可以从PHP脚本调用的开始到结束跟踪数据库活动 例如,假设我有一个脚本,它在数据库中为用户创建一个新记录。填写表单,点击submit,如果所有数据都有效,脚本将继续影响插入数据的多个表 脚本将数据插入主用户表;(姓名、地址、电话等)返回一个新的用户ID,然后还向部门表(用户ID、部门ID)添加一条记录,并向工资表(用户ID、工资)添加工资金额 是否有办法查看受脚本影响的所有表、它们的使用顺序以及为单个调用传递给它们的数据 额外信息:我将Ubuntu 14.04 LTS与Apache2.4.7

是否可以从PHP脚本调用的开始到结束跟踪数据库活动

例如,假设我有一个脚本,它在数据库中为用户创建一个新记录。填写表单,点击submit,如果所有数据都有效,脚本将继续影响插入数据的多个表

脚本将数据插入主用户表;(姓名、地址、电话等)返回一个新的用户ID,然后还向部门表(用户ID、部门ID)添加一条记录,并向工资表(用户ID、工资)添加工资金额

是否有办法查看受脚本影响的所有表、它们的使用顺序以及为单个调用传递给它们的数据

额外信息:我将Ubuntu 14.04 LTS与Apache2.4.7、PHP5.5.9和Postgres9.3.5一起使用。我是这台机器的唯一用户;一切都将在本地运行

最后,我想让脚本运行起来,并观察它在Postgres DB中的作用


谢谢。

您可以在服务器端执行此操作,方法是设置
log\u statement='all'
并设置适当的
log\u line\u前缀以包括后端进程ID、事务ID等

您可能会发现在客户端连接字符串中设置
application\u name
,或者在脚本中设置
set application\u name='blah'
,这样在日志中也更容易找到

请注意,您可以使用
ALTER user blah set log_statement='all'
按每个用户设置
log_语句
,或者使用
ALTER database blah set log_statement='all'
按每个数据库设置。您可以稍后使用
ALTER。。。重置日志\u语句


使用CSV格式的日志也更容易。

我要做的是在脚本中添加某种SQL记录器,以捕获提交到数据库的所有查询。记录器接收查询并存储它们,然后将查询发送到要执行的数据库。我不是很熟悉博士后,但可能有一个审计工具。但它可能只显示一个连接id或其他东西作为查询的源,这不会有很大帮助,因为DB不关心或跟踪查询来自何处Yes@LuckyBurger,这当然是一个选项-一位同事还建议我可以在日志文件上运行tail-f,这可能也会提供一些有用的输出。我试图避免用与功能无关的代码弄脏我的脚本。谢谢你的意见。是的,除了在你的体系结构中添加日志层之外,我真的想不出任何其他的方法。祝你好运谢谢@craig ringer,这不仅回答了我当前的问题,还让我深入了解了PostgreSQL的其他可用设置,并允许我仅为一个用户隔离日志记录,这将非常有用,特别是当我在日志记录方面遇到问题时,会减慢其他用户的查询速度。非常感谢。