首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php和c中使用共享内存?

问在php和c中使用共享内存?
EN

Stack Overflow用户
提问于 2009-03-25 09:04:39
回答 2查看 2.6K关注 0票数 3

你能在windows中使用共享内存在php脚本和c程序之间通信吗?

C程序一直在运行,并使用内存映射文件,即:

代码语言:javascript
复制
handle1 = CreateFileMapping(
 (HANDLE)0xFFFFFFFF, NULL, PAGE_READWRITE, 0, sizeof(byte)*BUFFER_SIZE, "my_foo" );

hView = (LPINT) MapViewOfFile(handle1, FILE_MAP_ALL_ACCESS, 0, 0, 0);

对于PHP脚本,我可以只使用下面的代码打开由c程序创建的内存映射文件吗?

代码语言:javascript
复制
$shmkey = @shmop_open(ftok("my_foo", 'R'), "a", 0644, $buffer_size);

或者,c内存映射文件和php共享内存是不同的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-25 09:09:32

PHP shmop函数只是底层POSIX functions的包装器,在windows下似乎不可用。

从PHP manual

注意:Windows2000之前的版本不支持共享内存。在Windows下,只有当PHP作为web服务器模块运行时,Shmop才会起作用,例如Apache或IIS (CLI和CGI不起作用)。

表面上,PHP在apache中模拟了这种行为,但由于它在独立的二进制文件中不可用,因此它很难与windows等价物集成。

票数 3
EN

Stack Overflow用户

发布于 2009-11-17 05:01:05

我希望允许PHP访问由Windows应用程序创建和写入的共享内存。我通过创建自己的php扩展(名为php_gsect.dll)实现了这一点。这可能不是您想要的,但是我的php_gsect连接到全局部分,并读取(或写入)大量字节,然后我可以操作这些字节。

仅供参考:我的windows应用程序正在从另一个系统检索动态趋势数据,并将数据放入指定的全局部分。php网页正在访问全局部分的数据并创建图表(使用ESJ图表库)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/680763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档