【问题标题】:Options to load DLL in PHP (7.0) at run time?在运行时在 PHP (7.0) 中加载 DLL 的选项?
【发布时间】:2020-10-30 21:38:17
【问题描述】:

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

有没有办法加载php_pgsql.dll?在运行时? 我知道已经有人问过了,例如herehere,而我最好的信息来源是here。如果我做对了,那么如果我不是系统的根用户就没有办法(因为dl() 已被删除)。

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

有没有办法从 PHP 代码开始(我们称之为systemPHP)相同的 PHP 代码但在不同的 PHP 环境中(myPHP 环境我可以控制以及我将在哪里包含 dll)?

例如,如果systemPHP启动collect.phpcollect.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 中获取响应来解决此问题,但有时它有时不起作用,我相信有更好的方法来做到这一点(更不用说速度和资源使用)。

【问题讨论】:

    标签: php postgresql dll runtime dynamic-loading


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 1970-01-01
      相关资源
      最近更新 更多