[請益] sem_acquire() 是 cross session 的嗎?
我要用 PHP 做一個簡單的搶答功能,
像是某個猜謎遊戲十點鐘開放,前三個答對的可以拿到獎品!
因為 PHP 每個 SESSION 都是獨立的,
我沒辦法寫一個 "真正的" global variable,
在不想用 MySQL 來做這麼簡單的事的情況下,
想到最簡單的方法是讓每個 SESSION 打開某個檔案,
檔案裏面一開始是 0,開過一次改寫成 1,如果打開後變 3 就拿不到獎品了。
因為要做到這點,
我需要一個 semaphore 確保一次只有一個 SESSION 能開這個檔案,
請問 sem_aquire() 是產生一個的 semaphore 給所有 SESSIONS 用的嗎?
(抱歉寫了一堆只有最後一句才是問題 Orz)
code 大概是這樣
$SEMKEY = 1;
$sem_id = sem_get( $SEMKEY, 1 ); /* maximum one user */
if ( sem_acquire( $sem_id )) {
/* 在這裏讀檔案看自己是第幾個答對的人 */
...
sem_release( $sem_id );
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.68.97.241
推
08/20 17:44, , 1F
08/20 17:44, 1F
→
08/20 17:45, , 2F
08/20 17:45, 2F
→
08/20 17:46, , 3F
08/20 17:46, 3F
→
08/21 13:02, , 4F
08/21 13:02, 4F
→
08/22 15:21, , 5F
08/22 15:21, 5F