Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 6

Двойное выполнение скрипта

04.08.2010, 15:39. Показов 1744. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Стал писать счетчик просмотров и оказалась, что счетчик увеличивается 2 раза за просмотр. Проблема оказалась в следующем.

Содержание .htaccess

PHP
1
2
3
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/?qs=$1 [L,QSA]
Эти правила говорят, что если запрашиваемый URL не является файлом или папкой, то запускаем index.php
В контенте страницы был img который ссылался на несуществующую картинку (такое часто бывает, при редактировании контента через tinyMCE/CKEditor), в результате при одном просмотре скрипт index.php запускался 2 раза.

На данный момент поставил заплатку, не запускать скрипт в одной сессии чаще чем раз в 2 секунды. Но это вариант мне не подходит. У когонибудь есть идеи, как избежать двойной загрузки. У меня пока только анализировать строку запроса, понимать, обращение идет к файлу или к папке (наличие расширеиния отличного от допустим php, html, htm и т.д.) и если к файлу то умирать
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.08.2010, 15:39
Ответы с готовыми решениями:

Выполнение PHP скрипта
Добрый день. Заранее извиняюсь за глупый вопрос,всего второй день разбираюсь с php. У меня на сайте имеется php скрипт который переносит...

Выполнение скрипта каждый час
Здравствуйте, необходимо запускать выполнние 100 ajax запросов каждый час автоматически как такое можно сделать? Можно по шагам...

PHP - выполнение скрипта и вывод сообщения в HTML
Доброго времени суток!Обращаюсь к вам ,о Великие гуру PHP :) Существует 25 этапов ,которые должны выводить сообщения, все сообщения...

4
Благотворец
 Аватар для arvitaly
142 / 122 / 13
Регистрация: 29.04.2009
Сообщений: 537
04.08.2010, 15:46
У меня пока только анализировать строку запроса, понимать, обращение идет к файлу или к папке (наличие расширеиния отличного от допустим php, html, htm и т.д.) и если к файлу то умирать
Самое лучшее решение, да и анализировать то ничего не надо, ведь как то в скрипте уже это определяется
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
04.08.2010, 15:47
Напишите свой счетчик просмотров в php-коде страниц. Это если счетчик посещений.

А если счетчик скачек файлов, то для каждого скачиваемого файла выводите ссылку типа download.php?file=filename.ext
Соответственно в download.php напишите свой счетчик.
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
04.08.2010, 15:53
Code
1
2
3
4
5
6
7
RewriteEngine On
RewriteBase /
 
# эти папки не обрабатывать скриптом
RewriteRule ^(img|css|js)($|/) - [L]
 
# здесь Ваши правила из Вашего поста ...
1
1 / 1 / 0
Регистрация: 08.11.2009
Сообщений: 6
05.08.2010, 08:20  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
Напишите свой счетчик просмотров в php-коде страниц. Это если счетчик посещений.

А если счетчик скачек файлов, то для каждого скачиваемого файла выводите ссылку типа download.php?file=filename.ext
Соответственно в download.php напишите свой счетчик.
PHP
1
2
3
4
5
6
7
8
9
10
static function show($id){
        global $core;
        $now = date('Y-m-d',time());
        $query = 'UPDATE `'.self::$impTable.'` set `hits`=`hits`+1 WHERE `bannerid`='.$id.' AND `since`="'.$now.'"';        
        $core->connection->query($query,false,true);               
        if(mysql_affected_rows()==0){            
            $query='INSERT INTO `'.self::$impTable.'` (`bannerid`,`hits`,`since`) VALUES ('.$id.', 1,"'.$now.'")';            
            $core->connection->query($query);                              
        }        
    }
это счетчик суточных показов банеров (показан только метод, отвечающий за увеличения счетчика)

Идея уже сформировалась, сейчас потестирую и отпишусь

Добавлено через 16 минут
Проблема решена следующим образом

.htaccess
PHP
1
2
3
4
RewriteRule ^(upload)($|/) - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/?qs=$1 [L,QSA]
Спасибо Vovan-VE за подсказку

И на всякий случай в index.php в начале такой код (на случай битых путей из других папок)

PHP
1
2
3
4
$script = $_GET['qs'];
$script = explode('.',$script);
$script = $script[1];
if($script&&$script!='php') die();
$_GET['qs'] - сюда rewrite_mod записывает строку запроса (строчка RewriteRule ^(.*)$ index.php/?qs=$1 [L,QSA] из .htaccess), т.е. если запрос http://www.mysite.ru/folder/fi... ue#anchour
то $_GET['qs'] = folder/file.ext
Вроде из $_SERVER можно выдрать, но маны некогда читать, а $_GET['qs'] у меня есть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.08.2010, 08:20
Помогаю со студенческими работами здесь

Запрет cron скрипта на выполнение через браузер
Я извиняюсь, за, возможно глупый вопрос, написал людям скрипт, отсылающий письма, поместил в корень сайта, владельцы сайта должны были...

Двойное выполнение обработчика формы
Привет всем. Помогите решить вопрос. Есть обработчик handler.php <?php if ($_SERVER != 'POST') die('Только post запросы!'); ...

Ставлю задержку на выполнение действий в цикле - задержка ставится почему то на выполнение всего скрипта
Здравствуйте! Код элементарный: $s = $_POST; $s = preg_replace('/ {2,}/',' ',$s); for ($i = 0; $i < strlen($s);...

Выполнение скрипта
Добрый вечер! Ребят может кто подсказать в какую сторону смотреть или рассказать как делается следующая штука. Значит был я сегодня у...

Фоновое выполнение скрипта
Здравствуйте! Столкнулся с такой задачей: Есть БД с некоторыми датами. Надо каждый день по этим датам проходиться и если дата совпала,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru