MariaLuke Ответов: 1

Как обновить счетчик просмотров страниц сеанса в таблицу MYSQL каждые 10 секунд


Я использую счетчик просмотров страниц в своем проекте. Я хочу сохранить количество посетителей в сеансе, поэтому каждые 10 секунд время может меняться каждые 1 час. Мне нужно обновить значение сеанса до таблицы MySQL. И хотя посетители открывают и закрывают браузер один раз, мне также нужно обновить это значение сеанса в моей таблице. Я выполняю эту задачу для оптимизации таблиц MySQL. Пожалуйста, помогите мне.

Что я уже пробовал:

<?php
// add custom post content
    function wp_post_view_blog_visit_count($content) {
    
      $ip_addr = $_SERVER['REMOTE_ADDR'];
      $post_id = get_the_ID();
    
      if(isset($_SESSION['wp_blog_views_two'.$post_id.$ip_addr])) {
          $_SESSION['wp_blog_views_two'.$post_id.$ip_addr] = ++$_SESSION['wp_blog_views_two'.$post_id.$ip_addr];
      }else{
          $_SESSION['wp_blog_views_two'.$post_id.$ip_addr] = 1;
      }
    
      $blog_view_count = $_SESSION['wp_blog_views_two'.$post_id.$ip_addr];
      echo $blog_view_count.' SESSION VALUE'.'<br>';
    
      $count_key = 'post_views_count_'.$post_id.$ip_addr;
      //WordPress has a function to get custom field values, get_post_meta().It accepts three parameters
      $count = (int) get_post_meta($post_id, $count_key, true);
      echo $count.' FROM TABLE'.'<br>';
      if($count == '' || $count == 0){
          //the function to delete custom fields values is delete_post_meta()
          delete_post_meta($post_id,$count_key); //delete the post_meta mysql table
          //Saving a custom field value in the database is as easy as getting it. The function to use is add_post_meta().
          add_post_meta($post_id, $count_key, 1);//add the data in post_meta mysql table
          return $content .= $count.' Views'.'<br><br>';
      }else{
          /*
          * Check the cookie is exist or not.
          * If not the set cookie for some time interval and
          * increase the count
          */      
          ++$count;
     
          if(isset($_SESSION["user".$post_id.$ip_addr])){
          if(time()-$_SESSION["login_time_stamp".$post_id.$ip_addr] > 10){ //means 10 seconds 3600
            unset($_SESSION['user'.$post_id.$ip_addr]);
            unset($_SESSION["login_time_stamp".$post_id.$ip_addr]);
            unset($_SESSION['wp_blog_views_two'.$post_id.$ip_addr]);
                //To update the value of an existing custom field use the function update_post_meta() 
            update_post_meta($post_id, $count_key, $count+$blog_view_count);
          }
      }else{
          $_SESSION["user".$post_id.$ip_addr] = 'VIEWING'.$post_id.$ip_addr;
          $_SESSION["login_time_stamp".$post_id.$ip_addr] = time();
      }    
      }
      return $content .= ''.$count.' Views'.'<br><br>';
    }
    add_filter('the_content', 'wp_post_view_blog_visit_count');

?>

пример кода:


<?php

session_start();

if(isset($_SESSION['views']))

     $_SESSION['views'] = $_SESSION['views']+1;
else
    $_SESSION['views']=1;

    echo"views = ".$_SESSION['views'];
?>

1 Ответов

Рейтинг:
1

MariaLuke

Привет, спасибо за ваш ответ. без плагина, который я реализовал, он работает нормально. Пожалуйста, ознакомьтесь с описанием ниже.

Мне нужно обновлять таблицу mysql каждые 10 секунд, она также будет меняться до часа

Я использовал сессии, чтобы сохранить количество посещений через 10 секунд я добавляю в таблицу MySQL счетчик + стоимость сессии

Пример : если посетитель загружает страницу 4 раза, значение сеанса будет 4, поэтому через 10 секунд я обновляю фактическое значение таблицы 4 + mysql

Это работает нормально , но когда посетитель открывает и закрывает браузер сразу , количество сеансов будет равно 1 , это значение сеанса я не могу обновить в таблице mysql. Так что не могли бы вы, пожалуйста, дать идею для этого.

Цель этой задачи-оптимизация таблиц mysql.