Günde benzersiz ürün görünümleri izlemesini sorun yaşıyorsunuz

0 Cevap php

Ben kurmak böylece bir değer, bir veritabanı tablosundaki güncellenen bir ürün görmek her zaman daily_product_stats. Sadece ürün başına bir kez oturum başına görünümünü saymak gerekir. Yani ürün 435 kolayca bunu ve bugün kolayca çoğu baktı oluyor hangi ürünü görebilirsiniz bugün izlendi kaç kez görmek için.

Ama ürün 2324 09:00 36 zamanlarda en baktı gibi, garip sonuçlar fark başladı. Ben şüpheleri şey thats değil bir çok popüler bir ürün beri doğru değil idi.

Bu yüzden ben de tabii her görünümü benzersiz yapmak için bir ip ile her görünümünü izlemek karar verdi. Yani ben her daily_product_stats Ben IP ile product_ip_tracking içine yeni bir satır ekleyerek am güncelleyin.

Bu yüzden birkaç dakika için bu yaptım ve sonuç yabancı var.

Öncelikle, burada izleme yapıyor sayfada kodu:

include_once("php/packages/pdomanager/PDOManager.php");

$pdo = PDOManager::getConnection();


$product_stat_qry = '
    INSERT INTO daily_product_stats
    SET product_stat = 1, product_id = :pid, first_entry = :date
    ON DUPLICATE KEY UPDATE product_stat = product_stat+1
';

// Update temp stat table
$product_ip_tracking_qry = '
    INSERT INTO product_ip_tracking
    SET product_id = :pid, date = :date, user_ip = :ip
';

$stat_data = array(
    "pid" => $_GET['pid'],
    "date" => date('Ymd')
);

$track_data = $stat_data;
$track_data["ip"] = $_SERVER['REMOTE_ADDR'];

$stat_sth = $pdo->prepare($product_stat_qry);
$track_sth = $pdo->prepare($product_ip_tracking_qry);

if(!isset($_SESSION['daily_product_stats'][$_GET['pid']]))
{ // only update once per person per session
    $stat_sth->execute($stat_data);
    $track_sth->execute($track_data);
    $_SESSION['daily_product_stats'][$_GET['pid']] = 1;
}

Birlikte idam olsun 2 farklı sorgular baktığımızda, daily_product_stats masada bir product_id için ne olursa olsun product_stat product_ip_tracking masaya aynı product_id için birçok satır olması gerektiğini varsaymak gerekir.

Bu yüzden bir kaç dakika çalıştırın ve sonra veritabanında bu sorguyu koştu:

SELECT product_id, COUNT( user_ip ) AS times, user_ip, DATE
FROM  `product_ip_tracking` 
GROUP BY user_ip
ORDER BY times DESC , product_id

ve ben product_id 8151 aynı IP adresi 66.249.65.123 bugün 84 kez görüntülendi bulundu. Benim kod günde bir defadan fazla izleniyor aynı IP önlemek gerektiğini düşündüm. Ben IP üzerinde biraz araştırma yaptım ve bunun gibi büyük olasılıkla Google bot görünüyor, bu yüzden, belki OTURUMU botlara olamaz küme düşünce öylesine thats neden onun birden çok kez izlenen alıyorum ...

Ben o zaman 84 olmak product_id 8151 ve onun product_stat için daily_product_stats tabloya bakmak bekleniyor. Bunun sadece 2 idi, değildi. Bunun nasıl mümkün olduğunu görmüyorum, çünkü bu çok tuhaf buluyorum . Burada ne oluyor hiç emin değilim.

Herkes herhangi bir fikir var mı?

0 Cevap