【发布时间】:2024-01-23 03:58:01
【问题描述】:
我正在编写一个 Web 应用程序,它将配置数据库加载到共享内存中以便快速访问。我遇到的问题是,从 Web 服务器(在本例中为 Apache)运行时共享内存与使用 php -f 从命令行运行共享内存之间似乎存在断开连接。这是在 Windows 10 机器上开发的,但生产服务器运行 Unix。不过,它似乎可以在 Unix 下工作。
我能找到的唯一相关信息是 * 上的 this question。我知道 Unix 和 Windows 之间的共享内存操作本质上是不同的,但是当我使用相同的 ID(key)来标识共享内存区域时,它不应该不考虑执行环境而访问同一区域吗?
我知道这可以在 Unix 下工作,因为我已经尝试过了。其他开发人员之一使用 Macintosh,它也可以在那里工作。 Windows 似乎无法正常工作。 PHP 手册指出共享内存在 2000 年之前的 Windows 版本上不可用。
那么,Windows 上 CLI 和 Web 之间共享内存的断开是平台固有的吗?链接问题中的答案似乎表明是的,但这是在 2009 年提出的。在那之后的 9 年多时间里,这仍然是一样的吗?
这是运行 Windows 10、Apache 2.4、PHP 7.2 和 MySQL 5.17。
我对 Windows 编程了解不多,因为我确实来自 Unix 环境,而且我过去曾将 System V 共享内存用于 IPC。
【问题讨论】:
-
CLI 使用的 php.ini 文件中配置的扩展名是否与 web 的 php.ini 使用的扩展名相同?
-
@MrGlass 我相信是的。当我运行 CLI 程序时它不会出错,因此它可以毫无问题地到达那里。
标签: php windows apache unix shared-memory