问题描述
我正在构建用于收集数据的小型应用程序。对于数据收集,使用PHP,对于数据存储,使用Postgresql。包括Postgresql,所以我可以完全控制它。用于收集的PHP由外部实体触发,我无法控制将运行代码的PHP解释器。
有没有办法加载PHP_pgsql.dll
?在运行时?
我知道已经有人问过它,例如here,here,而我最好的信息来源是here。如果我做对了,那我就不是系统的根了(因为dl()
被删除了)。
我可以将PHP添加到我的应用程序中,就像添加Postgresql一样(可以控制Postgresql,不需要让别人安装,配置,维护...),但是我的PHP文件是由外部应用程序触发的因此我无法控制使用过的PHP解释器/环境。
是否有一种方法可以从相同的PHP代码(称为systemPHP
)开始,但在不同的PHP环境(myPHP
环境中,我可以控制并在其中包含dll) )?
例如,如果systemPHP启动collect.PHP
,则collect.PHP
的伪代码将为:
if <this is myPHP> { # How to detect it?
<execute the data collection code>
}
else {
<Start collect.PHP in myPHP transfering all the data to it> # For example if started by apache then also headers,session information etc...
<Send back result from myPHP via the systemPHP>
}
如何实现此PHP“隧道”?
感谢您的帮助或提示。我知道最好是root或至少拥有智能的admin,但是事实并非如此:-(
当前,我正在尝试通过外壳执行数据库任务,然后在PHP中返回响应的解决方法,但是有时它有时无法工作,我相信这样做的更好方法(更不用说速度和资源使用率了)。
解决方法
您是否考虑过使用消息传递队列系统?写入队列,然后运行已加载php_pgsql.dll的PHP脚本,该脚本将检查队列中的新消息并进行处理。