php作为脚本程序,通常生命周期都很短,如在web应用中,一次请求就是php运行的一个周期,请求结束则生命周期截止。所以php在处理需要共享的资源时,一般会将共享数据保存在数据库或dbm之类的文件中,再者就是利用内存实现共享。你可以选择已有的工具辅助你,像memcache;也可以自己编写代码访问操作系统的共享内存段。
php中对共享内存段的操作有两组函数:System V IPC和Shared Memory。其中System V IPC系列函数能够更方便的操作数据,无需像Shared Memory那样必须自己掌握读写时的偏移量、长度等,也不用序列化/反序列化来回转换(因为Shared Memory函数只支持字符串格式的数据参数)。但是System V IPC系列不支持Windows,所以如果要在win环境下使用,只能选Shared Memory。
因为php默认不支持这些函数,所以需要重编译php。如要使用:
- System V信号量,编译时加上 –enable-sysvsem
- System V共享内存,编译时加上 –enable-sysvshm
- System V消息队列,编译时加上 –enable-sysvmsg
- Shared Memory,编译时加上 –enable-shmop
http://obatu.sinaapp.com/php-function-for-the-shared-memory-and-message-queue/