2013-09-23 3 views
-1

Итак, я играл с веб-разработкой много лет назад, и я немного ржавый, но не такой ржавый!PHP только Hit Counter?

Я только что сделал полноценную страницу видеоигр на другой день, используя переменные PHP для загрузки различных игр в разные размеры iframes. С учетом сказанного, почему на Земле я не могу заставить простой счетчик производительности PHP работать? Я загрузил скрипт после скрипта после скрипта, CHMOD'ed txt-файл на 777, весь 9. Не поддерживает ли Chrome счетчики попадания или что-то еще? Кажется, что даже сайты, которые я посещаю, показывают, что они попадают на счетчики, не работают на своих демонстрационных страницах! В чем дело? Я помню много лет назад, я скопировал около 10 очень простых строк кода, сохранил его как файл PHP, загрузил его вместе с пустым текстовым файлом на сервер и бам, отлично работал каждый раз. Что изменилось?

Вот код, который я использую. Кстати. Я попытался добавить это в свой index.html, я также попытался использовать его в виде отдельного php-файла и называть его INCLUDE всем. Ничто не работает.

<?php 

$open = fopen(“hits.txt”, “r+”); 
$value = fgets($open); 
$close = fclose($open); 

$value++; 

$open = fopen(“hits.txt”, “w+”); 
fwrite($open, $value); // variable is not restated, bug fixed. 
$close = fclose($open); 

?> 

, а затем, когда я хочу, чтобы результаты, которые будут отображаться, у меня есть,

<?php echo $value; ?> 

Любые идеи?

+4

Переименуйте index.html в index.php. Код на стороне сервера может не получить синтаксический анализ, если он содержится в файлах .html ... – ppeterka

+2

'" Я загрузил скрипт после скрипта после скрипта "' - Но вы написали или поняли какой-либо код? Как он работает не так, как ожидалось? Если конечный результат не тот, который вы ожидаете, выполните некоторую отладку. Действительно ли код работает? Каковы значения времени выполнения? В какой момент наблюдаемое поведение отклоняется от ожидаемого поведения? – David

+0

С двойными кавычками что-то не так: оно должно быть '' 'вместо' ''. –

ответ

1

Вы можете использовать следующие в качестве основного хита счетчик:

<?php 
    $counter = file_get_contents('./file') + 1; 
    file_put_contents('./file', $counter); 
?> 

Вы можете захотеть реализовать какой-то способ проверки того, что это не только один пользователь обновив страницу ... Что-то простое, как:

<?php 
    session_start(); 
    if(empty($_SESSION['visited']){ 
     $counter = file_get_contents('./file') + 1; 
     file_put_contents('./file', $counter); 
    } 
    $_SESSION['visited'] = TRUE; 
?> 

Будет проверять, посетил ли пользователь сайт в том же session и не увеличил значение, если оно есть.

1

Вы можете создать ajax-файл в PHP и вызвать ajax за промежуток времени и отобразить счетчик посещений на страницу.

Для этого в первую очередь создать файл АЯКС: ajax_user_count.php

<?php 
session_start(); 
$log_file_name = 'traffic_count.log'; 
$count = file_get_contents($log_file_name, true); 
if(empty($count)){$count = 0;} 
if(isset($_POST['action'])){ 
    $action = $_POST['action']; 
    if($action == 'enter'){ 
     if(!isset($_SESSION['user_count'])){ 
      $count += 1; 
      if($count == 0) { $count = 1; } 
      $_SESSION['user_count'] = $count; 
      $message = $count; 
      file_put_contents($log_file_name, $message);   
     } 
    } else if($action == 'leave'){ 
     $count -= 1; 
     $_SESSION['user_count'] = $count; 
     $message = $count; 
     file_put_contents($log_file_name, $message); 
     session_destroy(); 
    } 
} 

echo $count; 
die; 

Затем вызовите файл АЯКС по этой

$(document).ready(function(){ 
    get_enter_web_traffic(); 
    setInterval(function(){ 
     get_enter_web_traffic(); 
    }, 1000); 
    $(window).bind("beforeunload", function() { 
     $.ajax({ 
       type: "POST", 
       async: false, 
       cache: false, 
       url: "ajax_user_count.php", 
       data: {'action' : 'leave'}, 
       success: function(result) { }, 
       error: function(data) { location.reload(); 
      } 
     }); 
    });  

}); 

function get_enter_web_traffic(){ 
    var data = {'action' : 'enter'};  
    $.post('ajax_user_count.php',data,function(response){ 
     $('#count_user').html(response); // website hit count 
    }); 
}