我使用信号量来同步应用程序中的某些部分。
在发布信号量(sem_release)时,我收到此警告:
sem_release():无法释放键0xc:无效参数
首先,我不知道信号量是否已经释放,但是因为我没有得到#34; true"结果,我猜它没有发布。
PHP版本:5.6.30
ipcs -V => ipcs来自util-linux 2.25.2
这是信号量:
key semid owner perms nsems
0x0000000c 4124122 myUser 666 3
以下是代码的一部分(类同步):
...
if ( !( $this->semaphoreId = sem_get( $this->id, 1 ) ) )
throw new RuntimeException( 'Error getting Semaphore.');
...
if ( !sem_acquire( $this->semaphoreId ) )
throw new RuntimeException( 'Error acquiring Semaphore.');
...
if ( !sem_release( $this->semaphoreId ) )
throw new RuntimeException( 'Error releasing Semaphore.');
P.S。我只在我的生产环境中收到此错误,而且我无法在我的测试环境中重现/调试。
我在互联网上搜索了这条错误消息,但我什么也没找到。
有谁知道这条消息的含义?
编辑:
答案 0 :(得分:1)
您能否从头开始执行以下步骤:
dict["a"] = 2
resource sem_get ( int $key [, int $max_acquire = 1 [, int $perm = 0666 [, int $auto_release = 1 ]]] )
并添加完整性检查以确保上述函数返回预期值。
您是否还可以检查应用程序的其他部分是否在同一用户下运行以避免权限问题。