首页 > 解决方案 > 在运行时在 PHP (7.0) 中加载 DLL 的选项?

问题描述

我正在构建小型应用程序来收集数据。数据收集使用 PHP,数据存储使用 PostgreSQL。PostgreSQL 包含在内,所以我可以完全控制它。用于收集的 PHP 是由外部实体触发的,我无法控制将运行代码的 PHP 解释器。

有没有办法加载php_pgsql.dll?在运行时?我知道它已经被问过了,例如这里这里,我最好的信息来源是这里。如果我做对了,如果我不是系统的根目录(因为dl()已被删除),就没有办法。

我可以像添加 PostgreSQL 一样将 PHP 添加到我的应用程序中(以控制 PostgreSQL 并且不需要请人安装、配置、维护......),但是我的 PHP 文件是由外部应用程序触发的,所以我有无法控制使用的 PHP 解释器/环境。

有没有办法从 PHP 代码开始(我们称之为systemPHP)相同的 PHP 代码但在不同的 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 或至少有智能管理员,但事实并非如此 :-(

目前我正在尝试通过 shell 执行数据库任务然后在 PHP 中获取响应来解决此问题,但有时它有时不起作用,我相信有更好的方法来做到这一点(更不用说速度和资源使用)。

标签: phppostgresqldllruntimedynamic-loading

解决方案


您是否考虑过使用消息队列系统?写入队列,然后运行已加载 php_pgsql.dll 的 PHP 脚本,该脚本检查队列中的新消息并处理它们。


推荐阅读