你能在windows中使用共享内存在php脚本和c程序之间通信吗?
C程序一直在运行,并使用内存映射文件,即:
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程序创建的内存映射文件吗?
$shmkey = @shmop_open(ftok("my_foo", 'R'), "a", 0644, $buffer_size);或者,c内存映射文件和php共享内存是不同的吗?
发布于 2009-03-25 09:09:32
PHP shmop函数只是底层POSIX functions的包装器,在windows下似乎不可用。
注意:Windows2000之前的版本不支持共享内存。在Windows下,只有当PHP作为web服务器模块运行时,Shmop才会起作用,例如Apache或IIS (CLI和CGI不起作用)。
表面上,PHP在apache中模拟了这种行为,但由于它在独立的二进制文件中不可用,因此它很难与windows等价物集成。
发布于 2009-11-17 05:01:05
我希望允许PHP访问由Windows应用程序创建和写入的共享内存。我通过创建自己的php扩展(名为php_gsect.dll)实现了这一点。这可能不是您想要的,但是我的php_gsect连接到全局部分,并读取(或写入)大量字节,然后我可以操作这些字节。
仅供参考:我的windows应用程序正在从另一个系统检索动态趋势数据,并将数据放入指定的全局部分。php网页正在访问全局部分的数据并创建图表(使用ESJ图表库)。
https://stackoverflow.com/questions/680763
复制相似问题