• 08-03-2023, 14:44:34
    #1
    Merhabalar, blog sitesi oluşturuyorum. Daha önce basit tarzda hit sayaçı yapmıştım.
    Veritabanında
    blog_hit açarak
    blog-detay sayfasında blog_hit++ ile kolayca çözüyordum. Ancak şimdi detaylı bir blog sitesi yaptığım için sayfa yenilediğinde saymasın istiyorum. Nasıl yapabilirim?
  • 08-03-2023, 14:48:57
    #2
    Veritabanına inanılmaz yük olur yapma.
  • 08-03-2023, 14:51:31
    #3
    phpkoder adlı üyeden alıntı: mesajı görüntüle
    Veritabanına inanılmaz yük olur yapma.
    Hocama katılıyorum veritabanı için büyük yük olacaktır. Bu değerleri Google Analytics kurulumunu yaparak öğrenmek daha pratik ve hızlı olacaktır
  • 08-03-2023, 14:56:50
    #4
    her yazıya girildiğinde javascript ile belli bir süre geçerli (örneğin 5dk) storage oluşturabilirsin. yine javascript ile eğer aktif bir storage yoksa ajax ile hit güncelleme isteği atabilirsin.

    edit: illa php ile yapmak istiyorsan da session oluşturabilirsin. oluşturduğun session'da her girilen yazının id'sini eklersin. her sayfa yenilediğin zaman da ilgili id'nin session'da olup olmadığına göre hit güncellemesi yaparsın veya yapmazsın. ama bence böyle bir işlemi php tarafında yapıp server'a yük bindirmene gerek yok. javascript ile yaparak daha performanslı bir yapıya sahip olabilirsin
  • 08-03-2023, 14:59:24
    #5
    $_SERVER["REMOTE_ADDR"] ile kullanıcının ip'sini alıp veritabanı yerine bir JSON dosyasını güncelletebilirsin. Sonra json dosyasında ister dinamik ister statik veriyi çekersin. aynı ipleri görünce dosyayı güncellemez.
  • 08-03-2023, 15:07:40
    #6
    Veritabanında yük olmaz şu şekilde yapabilirsin.
    session_start();
    
    if ($_SESSION["refresh"] == "0")
    {
    $goruntulenme = $baglanti->query("SELECT * FROM sayfagoruntulenme WHERE blogid = $blogid");
    $goruntulenmeler = $goruntulenme['goruntulenme'];
    $goruntulenmeler++;
    $sayfagoruntulenme = $baglanti->exec("UPDATE `sayfagoruntulenme` SET `goruntulenme` = '$goruntulenmeler' WHERE `sayfagoruntulenme`.`blogid` = $blogid");
    $_SESSION['refresh'] = "1";
     
    //Blog idsini çekmen gerekiyor telefondan yazdigim icin yanlislik olmus olabilir bu mantikta yapcaksın yani
    //Session ile kullaniciyi kaydet veritabanindaki degeri +1 yapsin f5 attiginda ise if ile sorgula eger bu kullanici degeri zaten yükselttiyse tekrar yükseltmesin bu şekilde veritabanında yük yapmaz fakat google analytics ile yapman daha sağlıklı olur nokta atışı görüntülenmeler için.
    }
  • 08-03-2023, 15:22:52
    #7
    Herkese teşekkür ederim. Google Analystic ile nasıl yapılacağı hakkında video, yazı vs. kaynak var mı?
  • 08-03-2023, 16:03:44
    #8
    temurtaha adlı üyeden alıntı: mesajı görüntüle
    Herkese teşekkür ederim. Google Analystic ile nasıl yapılacağı hakkında video, yazı vs. kaynak var mı?
    Dediğiniz google ile yapılmaz.
    İp kontrolü yaparak sayacı güncelleyebilirsiniz.

    veri tabanında bir tablo oluşturun sayac adında.
    Siteye girenlerin ip adresini kayıt etsin.
    Daha sonra onları sayaç koduna entegre ederek sayacı kontrol edebilirsiniz.
  • 08-03-2023, 16:31:43
    #9
    ntka adlı üyeden alıntı: mesajı görüntüle
    Dediğiniz google ile yapılmaz.
    İp kontrolü yaparak sayacı güncelleyebilirsiniz.

    veri tabanında bir tablo oluşturun sayac adında.
    Siteye girenlerin ip adresini kayıt etsin.
    Daha sonra onları sayaç koduna entegre ederek sayacı kontrol edebilirsiniz.
    Teşekkür ederim. Dediğiniz gibi çözdüm. İhtiyacı olanlar için kısaca anlatayım.
    Veritabanında;
    • say_id
    • say_ip
    • say_blog_id
    Sorgu ve Ekleme;
    $ip=$_SERVER["REMOTE_ADDR"];
    $sayacsor= $db->prepare("SELECT * FROM say WHERE say_ip=? AND say_blog_id=?");
    $sayacsor->execute(array($ip,$blgd['blog_id']));
    if (!$sayacsor->rowCount()) {
        $ekle=$db->prepare("INSERT INTO say SET say_ip=?, say_blog_id=?");
        $insert=$ekle->execute(array($ip,$blgd['blog_id']));
    }