2010-08-31 23 views
1

因此,例如,我點擊一個按鍵1分鐘後究竟會送東西到數據庫,但我想給它也if I leave the page :)PHP:延遲數據庫請求也沒有活頁

所以,如果我離開這個頁面當從1分鐘剩下30秒時,倒計時將持續到60秒,然後將數據發送到數據庫。

希望它很清楚。我認爲我應該使用這個SESSION的,但請讓我知道如果你知道答案或任何有用的:)

例如:在http://www.travian.com/,當你開始建立東西,你會得到倒計時「將以xx:xx:xx「結束;但你不需要保持瀏覽器打開 - 即使你註銷,倒計時仍然在服務器上運行。

或者可以說,現實生活中的例子:

想象一個博客系統WordPress的一樣,在這裏我寫了一天10職位,但我想,以示對用戶只5/day

或者我要展現給用戶在8:00 A.M.

或者另外一個從TRAVIAN採取:

想象一下,一個game,您可以創建軍隊,而是要創造你需要等待部隊因爲生活不容易:D,所以for a troop你需要等待1 minutes

+0

我不明白你的問題。你能改說嗎? – 2010-08-31 08:48:09

+0

我不知道該怎麼做。但我確信,這是在cron的幫助下完成的。 – pltvs 2010-08-31 08:49:56

回答

1

這是不可能的。用戶可能會離開頁面,因爲他們的互聯網連接失敗或因爲有停電,此時無法讓他們將信息發送到數據庫。

你可以做的是立即存儲在數據庫中的數據,與時間戳「之前不要打開」模擬一分鐘的延遲,並且附加約束添加到針對該表中的所有請求:

WHERE createDate < NOW() 
+0

也許在PHP中,但有JavaScript功能,允許它。 Web開發這些天是非常多不同的語言和方法的組合,因此在PHP頁面內使用是可以接受的 – 2010-08-31 08:52:20

+2

@Daniel Hanly:什麼是JavaScript函數,可讓您在停電或互聯網期間將數據發送到服務器連接失敗? – 2010-08-31 08:53:50

+0

你說得很好,但你也許不應該暗示某件事情是不可能的。也許不宜,但並非不可能。 – 2010-08-31 08:56:08

1

也許你想用javascript命令來啓動延遲,因爲用Javascript你可以通過AJAX發送數據到PHP,如果你把這個AJAX封裝在一個函數中,然後從你的「延遲」函數中調用它。

對於頁面留下你也可以使用:

window.onbeforeunload=delayFunction; 

希望這有助於。

+0

我必須補充一點,這是一個不明智的行爲,因爲如果你的互聯網中斷是@Victor Nicollet所建議的,那麼你就沒有數據發送。你爲什麼不能立即發送? – 2010-08-31 08:55:15

+0

你的例子在某些情況下也很棒,感謝'onbeforeunload'我永遠不知道這是存在的:D – Adam 2010-08-31 09:18:28

+0

乾杯隊友,但是在你添加travian的例子後,這個解決方案還不夠好。至少現在你可以保留這個知識:) – 2010-08-31 09:19:28

0

這種行爲不能保證。我也可以通過關閉瀏覽器離開頁面。構建數據庫驅動的解決方案是最好的。