用PHP和C共享内存?

您可以使用共享内存在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共享内存不同?

解决方法:

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

PHP manual

Note: Versions of Windows previous to Windows 2000 do not
support shared memory. Under Windows,
Shmop will only work when PHP is
running as a web server module, such
as Apache or IIS (CLI and CGI will not
work).

显然,PHP在apache中模拟了此行为,但是由于它在独立的二进制文件中不可用,因此很难与Windows等效项集成.

上一篇:《Android 编程实战》Chap5_重识IPC


下一篇:如何在两个进程之间共享链表?