从 mssql 触发器运行 php 脚本
Posted
技术标签:
【中文标题】从 mssql 触发器运行 php 脚本【英文标题】:running a php script from mssql trigger 【发布时间】:2012-03-15 16:11:08 【问题描述】:如何从 MSSQL 触发器中运行 php 脚本(以运行 REST)命令?
我需要它在用户登录后从远程 Web 服务运行 REST 命令。
【问题讨论】:
【参考方案1】:您确定要在数据库层执行此操作吗?
您是否希望您的数据库事务在您的 REST 请求返回时等待(并持有锁)?如果您的 Web 服务运行缓慢并在 1 分钟后超时,会发生什么情况?
这是可能的,但同样,请谨慎使用。
在 SQL Server 中,有一个名为 XP_CMDSHELL
的扩展存储过程,它允许您在命令行上运行脚本。
http://msdn.microsoft.com/en-us/library/ms175046.aspx
默认情况下它是禁用的,但您可以像这样启用它:
EXEC sp_configure 'show advanced options', 1
GO
EXEC sp_configure'xp_cmdshell', 1
GO
然后在你的触发器中,你可以调用你的脚本:
xp_cmdshell 'C:\path\to\php\php.exe -f C:\Path\to\your\script.php'
如果您必须在数据库中执行此操作,我强烈建议您将 php 脚本移植到 .net 语言并将其作为 CLR 存储过程执行。这将更加安全,并且不太可能导致问题。
【讨论】:
谢谢你的回复,你说得对,这会扼住DB的脖子,你有什么建议?以上是关于从 mssql 触发器运行 php 脚本的主要内容,如果未能解决你的问题,请参考以下文章
Python3 脚本在 shell 中运行良好,但在 PHP 中触发 UnicodeEncodeError