PHP & ziyaretlerin benzersiz bir sayı için etkili karşı

3 Cevap php

Ben bir yazı üzerine ziyaret benzersiz bir sayı için bir sayaç oluşturma, peki şimdiye kadar var bu gibi veri depolamak için bir tablo veriyorum;

cvp_post_id  | cvp_ip | cvp_user_id

Durumlarda bir kayıtlı kullanıcı, bir yazı ziyaret sonraki ziyareti için ben tabloyu sorgulamak böylece ilk kez bir rekor, cpv_post_id ve cvp_user_id ile sokulur ve kayıt varsa ben yeni bir ziyaretçi olarak onu sayılmaz.

Bir anonim kullanıcı durumlarda aynı olur ama şimdi cvp_ip ve cpv_post_id kullanılır.

Benim kaygıları ben herkes bir ziyaret olmuştur olmadığını kontrol için bir yazı ziyaret her zaman, ne bu iş için daha etkili bir yolu olacak bir sorgu yapmak olduğunu?

3 Cevap

Senin üç sütun içeren benzersiz bir dizin oluşturun ve IGNORE anahtar kelimeyi kullanarak ekinizi yürütmek:

INSERT IGNORE INTO your_table (cvp_post_id, cvp_user_id)
VALUES(1, 1);

Bir SELECT bir INSERT tarafından takip önlemek yüzden Çoğu kullanıcı sadece bir kez ziyaret edecek.

Eğer oturumları kullanarak sorguları çok kaydetmek için yardımcı olabilecek çok basit bir yolu var, bunun gibi bir şey olmalı ediyor:

if(!isset($_SESSION['visited_post'][$yourPostID]))
{
    //Perform your code
    $_SESSION['visited_post'][$yourPostID] = true;
}

Kullanıcı için bir oturum yapmak ve (oturum açarken) oturum size açıkken bir kez kontrol etmek gerekir ama. Kullanıcı zaten o veritabanında olduğunu biliyorum bir yazı ziyaret ettiğinde artık.