ใครมีโค๊ด User online แบบใช้ดาต้าเบสเป็น .txt ไหมครับ

เริ่มโดย ThaNaButS, 16 มีนาคม 2008, 12:53:45

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

ThaNaButS

ตามนั้นคับแต่ถ้าเป็น Ajax ด้วยยิ่งดีคับ  :-*

D-N-A

[direct=http://www.tarad2u.net ]ลงประกาศฟรี[/direct]
tarad2u
[direct=http://www.thaipet2u.com]ตลาดซื้อขายสัตว์เลี้ยง[/direct]
thaipet2u
[direct=http://www.talad-pra.com]ตลาดพระเครื่อง[/direct]
พระเครื่อง
[direct=http://www.buycar4u.com]ซื้อขายรถยนต์มือสอง[/direct]
buycar4u
[direct=http://www.bike2hand.net]ตลาดมอเตอร์ไซค์ [/direct]
bike2hand

ขาย youtube แชนแนล พระเครื่อง 70k follow ทำเงินได้หลายทาง
T.086-9165783,line:taladpra


BosnoS

คุณโจ้ ผมลองเอาสคริปคุณไปใช้แล้ว ปรากฏว่า

8638 User Online

มันดูเยอะแปลกๆ เกินไปนะครับ :)

EThaiZone

กำ ว่าจะแก้ผมก็ลืมสนิท ดันเผลอใส่ล็อกไว้ ก่อนจะเลิกเป็นม็อดอีก เลยแก้ไขไม่ได้

:P (เซ็งเป็ด)

โค้ดครับ อันนี้ชัวร์

<?
session_start();
$file = dirname(__FILE__)."/"."useronline.txt";

$SID = session_id();
$time = time();
$exp = $time-300; //คือ 300 วินาที session จะหมดอายุ สามารถปรับค่าได้

$f=str_replace("\n", "", @file($file));
for ($i=0;$i<count($f);$i++) {
$data=explode("|",$f[$i]);
if ($data[0] != $SID && $data[1]>$exp) $last[] = $f[$i];
}

$last[] = "$SID|$time";

$f2=fopen($file,"w");
fputs($f2,implode("\n", $last));
fclose($f2);

$users_online = count($last);

?>

BosnoS

ลอง copy ไปดู ผมว่า code มันก็ตัวเดิมนิครับ หรือต่างจากเดิมแล้วผม หาไม่เจอ

ช่วงนี้เพื่อนมาถามเยอะ มาก ตั้งแต่ เห็น user online 8000 กว่าคน 

ถามว่า คนเข้าเยอะตั้งแต่เมื่อไร

ก็ตอบไปว่า

ตั้งแต่ ติดตั้ง สคริปตัวนี้แหละ  ;D

BosnoS

$exp = $time-300;

ต่างตรงเครื่องหมาย แน่ๆ เลย ลบ กับ บวก

EThaiZone

ต่างกันตรง

$exp = $time-300;

เพราะใช้แสดงถึงเวลาเก่าเท่าที่ session น่าจะอยู่ กับ

$data[1]>$exp

ที่ใช้เทียบว่า เวลา session ที่น่าจะอยู่ อายุต้องมากกว่า เวลาที่เก่าที่สุดที่กำหนดไว้

ผมตอนนั้นดันคิดเป็น ของเดิมเป็น + กับเครื่องหมายน้อยกว่า

:-X

EThaiZone

สคริปตัวนี้ คือมันตรวจที่ session แปลว่าถ้ามีคนเปิดด้วย Firefox กับ IE ในหน้าเว็บนั้น
ในคอมเดียวกัน ก็คือเป็น session คนล่ะตัวนะครับ (ไม่ได้ตรวจด้วย IP เพราะ ADSL บางค่าย ทำ NAT ภายใน)

และอีกอย่าง เวลาหมดอายุ คือ 300 วินาที

ถ้าลองกำหนดเป็น 10 วิ หรือ 30 วิ

ก็จะเห็นผลที่อัพเดตขึ้นครับ

เวลาหมดอายุ ก็เหมือนเป็นการคาดคะเน
เพราะเราไม่ได้ทำถึงขึ้น ตรวจสอบการปิด Browser เราเลยต้องสมมุติตามเกณฑ์

:P

BosnoS

ขอบคุณครับ


ป.ล. ใช้ตัวนับ user online มาหลายค่ายล่ะ ไม่เคยแสดงผล ตรงกัน สักเจ้า คงต้องยึด ตัวใดตัวนึงเป้นหลัก เอาของคุณโจ้ นี้แหละ ไม่ใช่ sql ไม่หนัก server