是否可以在 Windows 中的 PHP 和 C 之间共享内存?

Posted

技术标签:

【中文标题】是否可以在 Windows 中的 PHP 和 C 之间共享内存?【英文标题】:is it possible to share memory between PHP and C in Windows? 【发布时间】:2015-05-16 10:13:27 【问题描述】:

您可以在 Windows 中的 php 脚本和 C/C++ 程序之间使用共享内存吗? 例如,通过使用 PHP 共享内存 (link) 和 windows 内存映射文件?

【问题讨论】:

如果您能详细说明并提供一些支持性的引用和示例,这将对每个人都非常有用。 【参考方案1】:

我认为如果您创建自己的 PHP 扩展,这可能是可能的。据我所知,PHP 扩展是用 C 语言编写的。

可能已经编写了一些扩展来做这件事。

更新:

看起来有可能。请查看官方文档中的这一章:http://php.net/manual/en/book.shmop.php。这里有一些例子:http://www.raspberry-projects.com/pi/programming-in-c/memory/shared-memory-between-c-application-and-php-web-server

UPD 2:

我对共享内存和内存映射文件不是很熟悉,但看起来这些问题与您的问题有些相似:Shared memory C++ - PHP 和 PHP - Access shared Memory created with C++。

另外,您可能有兴趣阅读 George Schlossnagle (link) 的《高级 PHP 编程》一书。看起来有一个如何实现 PHP 扩展来处理内存映射文件的示例。

【讨论】:

【参考方案2】:

是的,这是可能的。 从上面的链接开始,我已经能够编写一个共享相同命名共享内存的 PHP 扩展和一个简单的程序。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx http://devzone.zend.com/303/extension-writing-part-i-introduction-to-php-and-zend/#Heading12

【讨论】:

以上是关于是否可以在 Windows 中的 PHP 和 C 之间共享内存?的主要内容,如果未能解决你的问题,请参考以下文章

WIN下如何在PHP扩展里打开openssl支持

使用嵌入在 Windows 7 上的 MySQLi 编译 PHP

可以在php中打包带有位字段的c结构吗?

我可以将`a.out`文件转换为C / C ++中的“可执行文件”(在Linux上!)? [关闭]

win 7phpstudy 怎样打开socket支持

windows系统支持php吗