在一个非常繁忙的PHP服务器上,我试图让一个全局计数器继续前进,并认为共享内存将是可行的方法。理想情况下我会使用APC
apc_add('counter',1);
apc_inc('counter',1);
var_dump(apc_fetch('counter'));
除了它在服务器上不可用,我被限制在可用的范围内。服务器确实有shmop所以试图让它工作,但它似乎是特定于会话。还有什么可以用的吗?
我试过的shmop代码:
$shm_key = ftok(__FILE__, 't');
$shm_id = shmop_open($shm_key, "c", 0644, 8);
$shm_data = shmop_read($shm_id, 0, 8);
$shm_data = shmop_read($shm_id, 0, 8);
var_dump($shm_data);
if (empty($shm_data)) {
//counter has not been set
$shm_bytes_written = shmop_write($shm_id, 0, 1);
} else {
$shm_bytes_written = shmop_write($shm_id, (int)$shm_data + 1, 0);
}
$shm_data = shmop_read($shm_id, 0, 8);
var_dump($shm_data);