ทางออกสำหรับการนับผู้ใช้ออนไลน์ปัจจุบัน
เมื่อสร้างเว็บไซต์การสื่อสารออนไลน์มีปัญหาที่ทำให้ฉันรู้สึกมีปัญหามากซึ่งเกี่ยวกับสถิติเรียลไทม์ของผู้ใช้ออนไลน์ ข้อกำหนดของลูกค้า: นับจำนวนผู้ใช้ออนไลน์จำนวนนักท่องเที่ยวจำนวนสมาชิกและรายชื่อผู้ใช้ออนไลน์รวมถึงนักท่องเที่ยวสมาชิกและผู้ดูแลระบบ (หากพวกเขาเป็นนักท่องเที่ยวรหัสของนักท่องเที่ยวจะถูกสร้างขึ้นโดยอัตโนมัติและหากพวกเขาเป็นสมาชิกชื่อสมาชิกจะแสดง) เพราะมันต้องใช้เวลาเรียลไทม์ก่อนอื่นฉันจะผ่านความคิดในการแก้ไขด้วย global.asa
กุญแจสำคัญของปัญหาคือวิธีบอกผู้ใช้ออกไปและวิธีการเรียกใช้ไฟล์หรือฟังก์ชั่นเมื่อผู้ใช้ออก
หลังจากพูดคุยกับเพื่อนบางคนออนไลน์ปัญหานี้ได้รับการแก้ไขในที่สุด
วิธีแก้ปัญหาคือ: เขียนหน้าทั่วไป หน้าทั่วไปที่เรียกว่าแต่ละหน้าในแอปพลิเคชันมีหน้านี้ตัวอย่างเช่น: header.asp ในหน้านี้เขียนโค้ดชิ้นหนึ่งโดยใช้ XMLHTTP วัตถุประสงค์ของรหัสชิ้นนี้คือการส่งคำขอไปยังเซิร์ฟเวอร์ทุก ๆ 10 วินาทีหรือ 20 วินาที จุดประสงค์คือการอัปเดตเวลาออนไลน์ของผู้ใช้ปัจจุบันและลบผู้ใช้ที่มีเวลาออนไลน์เกินระยะเวลาหนึ่งเพื่อให้ผู้ใช้ออนไลน์บันทึกในฐานข้อมูลรักษาเวลาเรียลไทม์ตามเวลาจริง
วิธีการใช้งานหลักคือ:
สร้างฐานข้อมูลใหม่ชื่อฟิลด์คือ: id (อักขระ) ชื่อ (อักขระ) ผู้ใช้ (หมายเลข) TT (วันที่) ผู้ดูแลระบบ (รหัสสิทธิ์ผู้ใช้ 0-ordinary ผู้ใช้ 1-admin)
ชื่อตาราง: ออนไลน์
header.asp ↓
-
-
-
ifsession ("s_in") <> 1andsession ("s_name") = "" จากนั้นถ้าผู้ใช้เข้าสู่ระบบเป็นครั้งแรก
Rs.Open "Select*Fromline", Conn, 3,3
Rs.Addnew
rs ("id") = session.sessionid
RS ("NAME") = "Guest" & Session.sessionId
RS ("ผู้ใช้") = 0'0 หมายความว่าผู้ใช้ไม่ได้เข้าสู่ระบบและเป็นตัวตนของนักท่องเที่ยว
rs ("tt") = ตอนนี้
Rs.update
Rs.close
เซสชัน ("s_in") = 1'Set ข้อมูลของผู้ใช้ถูกเก็บไว้ในฐานข้อมูลซึ่งระบุว่าได้ออนไลน์
endif
ifsession ("s_name") <> "" จากนั้นผู้ใช้ได้ลงชื่อเข้าใช้กล่องเข้าสู่ระบบ
Rs.Open "Select*fromlinewhereid = '" & session.sessionid & "'", Conn, 3,3
rs ("ชื่อ") = เซสชัน ("s_name")
rs ("admin") = เซสชัน ("s_admin") 'อัปเดตชื่อผู้ใช้เป็นชื่อสมาชิก
RS ("ผู้ใช้") = 1 'หมายความว่าผู้ใช้ได้ลงชื่อเข้าใช้และเป็นสมาชิก
rs ("tt") = ตอนนี้ตั้งเวลาระบบปัจจุบันถึงเวลาเข้าสู่ระบบของผู้ใช้
Rs.update
Rs.close
endif
-
-
-
<head>
-
<scriptLanguage = JavaScript>
functiontest ()
-
varxmlhttp = newActivexObject ("msxml2.xmlhttp");
XMLHTTP.OPEN ("โพสต์", "ครั้งเดียว onOnline.asp", false); // ส่งคำขออัปเดตไปที่ครั้งเดียว
XMLHTTP.SetRequestHeader ("ประเภทเนื้อหา", "แอปพลิเคชัน/X-WWW-FORM-URLENCODED");
xmlhttp.send ();
-
setInterval ("test ();", 10); // ส่งคำขออัปเดตใน 10 วินาที
</script>
-