脚本宝典收集整理的这篇文章主要介绍了php – 获取PostgreSQL的所有通知RAISE NOTICE,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
RaiSE NOTICE 'some step completed';
我希望在我的PHP应用程序中获得所有这些通知.我发现只有pg_last_notice()函数只返回最后一个通知.
CREATE OR REPLACE FUNCTION do_smth() RETURNS void AS $BODY$ BEgin -- some actions RAISE NOTICE 'Result of the actions:...'; -- some other actions RAISE NOTICE 'Result of the other actions..'; $BODY$ LANGUAGE plpgsql VOLATILE COST 100;
<?PHP // ... $db->exec("SELECT do_smth()"); // executing DB function $last_notice = pg_last_notice($db_connection); // returns 'NOTICE: Result of the other actions..'
在您的情况下,“应用程序”(PHP本身)通过指定自定义通知处理程序(称为_php_pgsql_notice_handler)来覆盖此行为:
Line #1367: PQsetNoticePRocessor(pgsql,_PHP_pgsql_notice_handler,(void*)Z_RESVAL_P(return_value));
这意味着Postgresql通知不会进一步传播到stderr,而是由该处理程序捕获和处理.
在处理程序本身(第827行)中,您可以看到每次发出通知时,PHP都会更新包含它的变量,并且不会将值附加到某个数组.因此,最后只有最后一个通知存在于该变量中,可通过调用pg_last_notice()获得.
因此,看起来不可能从PHP中获取以前的Postgresql通知.
但是,如果您进一步查看相同的通知处理程序,您会看到它正在将通知写入错误日志,以防pgsql.ignore_notices = 0,pgsql.LOG_notices = 1且E_NOTICE包含在error_reporting中.我想用一些PHP错误处理函数杂耍你将能够获得一些东西.
以上是脚本宝典为你收集整理的php – 获取PostgreSQL的所有通知RAISE NOTICE全部内容,希望文章能够帮你解决php – 获取PostgreSQL的所有通知RAISE NOTICE所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。