簡體   English   中英

PHP並發請求導致多個會話

[英]PHP Concurrent Requests Lead to Multiple Sessions

我正在努力更新高流量網站上的現有訪客跟蹤腳本。 我注意到問題不在於腳本本身,而在於有多個請求時會發生什么。 假設某個用戶雙擊了指向我網站的某些鏈接,結果實際上是同時發出了兩個請求。 請求1得到處理並創建了會話。 然后,腳本繼續將訪問者記錄添加到數據庫中。 同時,請求2正在處理中。 它檢查是否設置了會話,沒有設置會話,因此它執行與請求1相同的操作。 現在,我們應該在數據庫中的visitors表中有2個不同的會話和2個記錄。 當前會話的會話ID最終來自最后完成的請求。

因此,我要做的就是防止這種情況的發生。 即使有來自同一位訪問者的100個並發請求,我也希望只創建一個會話ID,並且最重要的是,只有一個記錄(不是100個記錄)插入數據庫的游客表中。 這涉及在幾毫秒內確定一個請求已經發出。 有任何想法嗎?

您可以將腳本的開頭設置為強制特定會話。 http://www.php.net/manual/zh/function.session-start.php

我的Java應用程序具有以下解決方法。 首次訪問php服務器時,我會發送一個阻塞ping調用,以建立唯一的會話ID。 之后,我開始向php服務器發送並發請求。 例如,在init塊中,也可以從網頁中進行此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM