共享变量在几个小时后不断丢失

时间:2012-02-22 14:56:18

标签: php shared-memory

我正在使用shm_函数为我的API提供共享数组。 该阵列存储客户端数据,有助于限制命令请求(速率限制等) 我用suhosin补丁运行PHP 5.2.6-1

这是代码,对于那些正在寻找用PHP创建/读/写/存储共享内存数据的代码的人来说,它实际上可能是有用的。

$shm_key=ftok(__FILE__, 'S' ); 
$data=shm_attach($shm_key,500000);
$ar=shm_get_var($data,"variable");
if ($ar === FALSE))
{
// this should rarely ever happen !
// recreate empty arry
}
//...
// reading and changing the $ar array contents
//...
shm_put_var($data,"variable",$ar);
shm_detach($data);

序列化变量数据很少大于10-11kb,因此500kb应该有足够的可用空间。 每小时总共有10,000-50,000个php脚本调用。

($ ar === FALSE)每天被击中4-5次,导致所有限制数据完全丢失。 我已经接受了这种行为多年,但仍希望看到它解决了。

我的猜测是,当写/读并且多个客户端同时调用脚本时,它是shm_中的错误或竞争条件。

0 个答案:

没有答案