2010-12-20 49 views
-1

假設我有一個函數在PHP這樣的:一個會話應該在其他會話進入函數之前完成一個php函數,怎麼樣?

function post_data() 
{ 

    // Do the job 
} 

現在我想先於其他遊客進入功能這一功能,首先完成當前訪問者。其他訪問者應該通過此功能並執行剩餘的腳本作業。我過多地搜索了這個問題,但找不到合適的答案。我發現使用flock()php函數。我試過flock(),它對我來說效果最好,但我想要一個獨立的解決方案。

那麼在沒有使用flock()的情況下,其他人在進入函數之前如何鎖定這個函數?

回答

2

在像這樣的情況下鎖定整個函數是一個壞主意;你基本上是序列化你的網站的數據處理。您確實需要儘可能縮小範圍,以便只需要哪些代碼需要同步。

而你最終不得不lock,你最好不要重新發明輪子。

+0

我想寫我的cron函數,所以如果2個或更多的訪問者同時來,他們將同時讀取所有cron存儲的值,並將運行該函數。這就是爲什麼我希望它完成第一個訪問者,並且該功能不應該運行,直到下一個時間表計時。 – 2010-12-21 04:25:17

+0

@Kashif Javed - 我不確定我完全理解你在做什麼;你上面引用的功能實際上是做什麼的,確切地說呢?多久時間?如果有另一位訪問者出現,而第一位訪問者仍在使用該功能,您希望發生什麼?此功能是否對網站的所有請求運行,或僅運行某個子集的時間,或僅針對某些用戶,或僅當某人訪問某個頁面時運行? – 2010-12-21 04:32:53

+0

該功能適用​​於所有訪客。上面的函數沒有什麼,只是我認爲如果我有一個這樣的函數,並且只有一個訪問者應該一次完成。其他遊客應該回來,而一個人在做這項工作。該功能可用於任何目的。這不應該是多長時間或需要做什麼。 – 2010-12-30 09:22:54

相關問題