php共享内存和信号量,避免密钥冲突

时间:2012-04-11 16:07:07

标签: php semaphore shared-memory

使用php共享内存和信号量。我怎样才能首先检查信号量和共享内存块的密钥,是否与其他php实例冲突?另外,当使用shm_attach函数创建一个新块时,有没有办法验证该块是否已经存在?

1 个答案:

答案 0 :(得分:2)

我真的不明白你在这里问的是什么。共享内存的重点在于它是共享 - 因此能够在不同的PHP实例中使用相同的密钥几乎是一项要求。

通常人们使用文件系统路径(语义上有意义)通过ftok()函数生成密钥(无意义)。如果你想生成一个不被任何其他php实例共享的随机密钥,那么使用tempnam()创建一个新文件,然后将其移除。

  

当使用shm_attach函数创建一个新块时,有没有办法验证该块是否已经存在?

是的 - 在你创建之后把东西放在那里。如果它们在这两个步骤之间是空的那么它就是新的。