Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Скрипт выполняется два раза / 6 сообщений из 6, страница 1 из 1
12.07.2016, 01:23
    #39272115
MBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт выполняется два раза
Здорова товарищи одним словом у меня следующая проблема, скрипт выполняется два раза...

Делаю счетчик просмотра той или иной статьи...

Все по порядку...

Сам .htaccess
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
AddType image/x-icon .ico
AddDefaultCharset UTF-8

<IfModule mod_rewrite.c>
Options +FollowSymlinks
Options -Indexes

RewriteEngine on
RewriteCond %{REQUEST_URI} \.(png|gif|ico|swf|jpe?g|js|css|ttf|svg|eot|woff|yml|xml|zip|txt|doc)$
RewriteRule ^(.*) $1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} \.(ini|php)$
RewriteRule ^(.*) index.php [L,QSA]
</IfModule>

<IfModule mod_php5.c> 
php_flag magic_quotes_gpc Off
</IfModule>



Сам код который выполняется при каждом заходе на страницу со статьей

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
	  static function countViews() {
	    
	    if (MG::get('controller')=='controllers_product') {
		    $url = URL::getLastSection();
			
			//вытаскиваем товар который мы просматриваем
			$res = DB::query("SELECT `id` FROM `".PREFIX."product` WHERE `url` = ".DB::quote($url));
			$prod = DB::fetchArray($res);
			$id_prod = $prod['id'];
			
			$visit_ip = $_SERVER['REMOTE_ADDR'];			
			$date = date("Y-m-d");
			
			//узнаем было ли посещения
			$res = DB::query("SELECT `visit_id` FROM `".PREFIX."visits` WHERE `ip_adress` = ".DB::quote($visit_ip)." AND `date` = ".DB::quote($date)." AND `product_id` = ".DB::quote($id_prod, true));
			
			if (DB::numRows($res) == 0) { //сегодня не было посещений
				
				//заносим в базу просмотров, дату посещения и количество уник. в 1
				DB::query("INSERT INTO `".PREFIX."visits` SET `ip_adress` = ".DB::quote($visit_ip).", `product_id`=".DB::quote($id_prod, true).", `date`=".DB::quote($date).", `hosts`=1, `views`=1");
				
			} else { //если посещения уже были
				
				//проверяем есть ли IP - адрес в БД, с которого происходит обращение
				$current_ip = DB::query("SELECT `ip_adress` FROM `".PREFIX."visits` WHERE `ip_adress` = ".DB::quote($visit_ip)." AND `date` = ".DB::quote($date)." AND `product_id` = ".DB::quote($id_prod, true));			
				
				if (DB::numRows($current_ip) == 1) { //если уже был такой ip
				    //добавляем для текущей даты +1 просмотр (хит)
					$res = DB::query("UPDATE `".PREFIX."visits` SET `views` = `views`+1 WHERE `ip_adress` = ".DB::quote($visit_ip)." AND `date` = ".DB::quote($date)." AND `product_id` = ".DB::quote($id_prod, true));
				} else { //если такой ip сегодня не было, то это уникальный посетитель, на сегодня
				   
				   //Добавляем в базу +1 уникального посетителя (хост) и +1 просмотр (хит), к кокретной статье				   
				   DB::query("UPDATE `".PREFIX."visits` SET `hosts`=`hosts`+1, `views`=`views`+1 WHERE `ip_adress` = ".DB::quote($visit_ip)." AND `date` = ".DB::quote($date)." AND `product_id` = ".DB::quote($id_prod, true));
				}
			}
			
			//подсчиьываем количество всего просмотров
			
			$res = DB::query("SELECT sum(views) as count_views FROM `".PREFIX."visits` WHERE `product_id` = ".DB::quote($id_prod, true));
			if ($res) {
			    $c = DB::fetchArray($res);
				$cnt = $c['count_views'];
			}
			
			return $cnt;
		}
	  }



Открываю лог apache, а там два вызова, с разницей в две секунды
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
127.0.0.1 - - [12/Jul/2016:01:22:05 +0300] "GET /politika/novost-1 HTTP/1.1" 200 48829
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /politika/novost-1 HTTP/1.1" 200 48829
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /mg-admin/locales/ru_RU.js?_=1468275726571 HTTP/1.1" 200 59370
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /mg-core/script/jquery.tipTip.js?_=1468275726572 HTTP/1.1" 200 7061
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /mg-core/script/toggles.js?_=1468275726573 HTTP/1.1" 200 2574
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /mg-core/script/admin/change-theme.js?_=1468275726574 HTTP/1.1" 200 4274
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /mg-core/script/admin/change-language.js?_=1468275726575 HTTP/1.1" 200 1125
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /mg-core/script/admin/userProperty.js?_=1468275726576 HTTP/1.1" 200 66467
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /mg-core/script/jquery.form.js?_=1468275726577 HTTP/1.1" 200 27656
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /mg-core/script/ckeditor/ckeditor.js?_=1468275726578 HTTP/1.1" 200 438466
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /mg-core/script/ckeditor/adapters/jquery.js?_=1468275726579 HTTP/1.1" 200 3187
127.0.0.1 - - [12/Jul/2016:01:22:07 +0300] "GET /mg-core/script/admin/plugins.js?_=1468275726580 HTTP/1.1" 200 8592



Из за этого у меня не правильно считается счетчик просмотра....
В чем может быть проблема? А то уже бьюсь два дня.... Некоторые пишут, что идет запрос favicon.ico, он у меня лежит в корне...
...
Рейтинг: 0 / 0
12.07.2016, 02:07
    #39272119
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт выполняется два раза
Мож браузер чудит или какое дополнение.
Первый раз только хтмлку тянет, а со второго раза все файлы страницы. Странно как-то.
...
Рейтинг: 0 / 0
12.07.2016, 10:31
    #39272249
MBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт выполняется два раза
Соотвественно у меня счетчик просмотров, прибавляет +2
...
Рейтинг: 0 / 0
12.07.2016, 14:47
    #39272456
MBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт выполняется два раза
Товарищи, кто нибудь не может подсказать, в чем может быть причина
...
Рейтинг: 0 / 0
12.07.2016, 15:48
    #39272503
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт выполняется два раза
В логе вебсервера зафиксировано же ДВА запроса. Каждый запрос к вебсерверу считается. Потому логично, что на двух запросах счётчик добавляет два обращения.

А вот почему ваш браузер дважды обращается за одной страничкой - это уж у него надо спрашивать. Другой браузер так же работает? Если так же, то смотреть хтмл-код страницы, скрипты...
...
Рейтинг: 0 / 0
12.07.2016, 16:40
    #39272539
sxq
sxq
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скрипт выполняется два раза
Если на сайте установлена метрика от яндекса, то при определенных настройках вебвизора идет обращение 2 раза, первый раз собственно посетитель, а 2-й метрика. Возможно какие-либо расширения браузера дают аналогичный эффект, нужно по максимуму все отключить в браузере и сайте.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Скрипт выполняется два раза / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]