sem_release()无法释放已删除的密钥标识符

时间:2017-12-17 02:12:43

标签: php semaphore

我想使用php信号量来防止Laravel连接到db的死锁。 我使用下面的示例代码,它可以在80%的时间内工作,但在实际应用程序中它会抛出错误,sem_release():无法释放密钥标识符。

$sem_id = sem_get($user_id , 1);
if ($sem_id === false)
{
    return  "Fail to get semaphore";
}
 if (! sem_acquire($sem_id))
{
    sem_remove($sem_id);
    return  "Fail to aquire semaphore $sem_id.\n";
}
if (error) {
    sem_release($sem_id);
    sem_remove($sem_id);
    return 'fail';
}
 if (!sem_release($sem_id))// this line throws error 
    return  "Fail to release $sem_id semaphore.\n";
if (!sem_remove($sem_id))
    return "Fail to remove $sem_id semaphore from SysV.\n";
return 'ok';

任何人都可以帮助我。感谢

0 个答案:

没有答案