2016-01-07 8 views
0

Я создаю грубый счетчик просмотров для моего сайта, который будет обновлять базу данных, а затем установить cookie с идентификатором страницы, чтобы другое представление не встало. Сегодня я понял, что очень быстро пользователь может иметь кучу файлов cookie в зависимости от того, сколько страниц они посещают на сайте. Есть ли лучший способ только вставить один просмотр для каждого пользователя или этот метод cookie является адекватным. Благодарю.Могут ли печенье влиять на производительность?

PHP Просмотр Update Код:

public function updateViews ($id) { 
    $db = Database::getInstance(); 

    //Set Cookie to indicate viewed 
    setcookie($id, rand(), time()+3600*24*365*10); 

    //Set required variables 
    $currentViews = $this->getData($id)->fetch(PDO::FETCH_ASSOC)['views']; 
    $newViews = $currentViews + 1; 

    if (isset($_COOKIE[$id])) { 
     //Do nothing because cookie isset 
    } else { 
     //Define Query 
     $query = "UPDATE coils SET `views` = '".$newViews."' WHERE `uniqueid` = '".$id."'"; 

     //Prepare Query 
     $prepareQuery = $db->getConnection()->prepare($query); 

     //Execute Query 
     $prepareQuery->execute(); 
    } 

    $currentViews = number_format($currentViews); 


    //List results to user 
    if ($currentViews > 1) { 
     $this->views = $currentViews . " Views"; 
    } else if ($currentViews <= 1) { 
     $this->views = $currentViews . " View"; 
    } 
} 
+3

У них не может быть кучи печенья .. http://browsercookielimits.squawky.net/ –

+0

@aaronxxx О печных страницах cookie. Возможно ли это, и будет ли это предел для файлов cookie? –

+1

В соответствии с этим сайтом @aaronxxx вы не должны загружать их из своего домена более чем с 50 кукисами, превышающими 4096 байт. Если вы превышаете это, тогда вам следует рассмотреть возможность использования сеансов. Не связанный, вы должны использовать только простой оператор if, а не ваш 'isset' (например,' if (! Isset ($ _ COOKIE [$ id])) вместо использования if/else. –

ответ

0

После прочтения на обеих сессий и печеньем, я решил, что база данных будет лучшим решением. Это позволит мне предотвратить несколько просмотров из разных браузеров и будет более точным, чем просто cookie/session.

Смежные вопросы