我已經實現了一個訪問控制,用於插入用於預訂服務的數據庫表中。它可以正常工作一段時間,然後sem_get()
函數失敗,儘管我在每個sem_get()
之後調用sem_release()
。PHP sem_get函數失敗
case 'room':
$key = "room";
$semaphore = sem_get($key, 1, 0666, 1);
if ($semaphore) {
sem_acquire($semaphore);
//do some stuff
if ($already_reserved_rooms < $max_rooms) {
$return="ok";
sem_release($semaphore);
return $return;
}
sem_release($semaphore);
}
else {
//send me mail that semaphore failed
}
return 'no rooms';
break;
我該打電話給sem_remove()
嗎?
我按照this網站上的步驟操作。
當'sem_get'失敗時,它會記錄一個警告。告訴我們警告。 –
我會從'sem_remove'的描述中說,在全部**進程完全完成信號量之前,絕對不是您想要做的事情。 – apokryfos
感謝主席的回覆,這一切我可以找到PHP警告:sem_release():SysV信號量5(密鑰0x214)目前沒有獲得 – JokerDev