CodeIgniter увеличивает/подсчитывает просмотры страниц дважды, а не один раз

Я просто пытаюсь увеличить количество просмотров страниц за посещение с помощью активной записи CodeIgniter. По какой-то причине следующий код увеличивается дважды. Таким образом, он добавляет 2 просмотра страниц за посещение. Странно то, что это используется на другом веб-сайте, который использует ту же таблицу и тот же код метода, и он работает правильно на другом веб-сайте. Поле представлений представляет собой простое целое (11). Я вызываю этот метод только один раз в контроллере, я думал, может быть, у меня есть дубликат, но это не так.

function increment_video_view($video_pk) {
    $this->db->where('video_pk', $video_pk);
    $this->db->set('views', 'views+1', FALSE);
    $this->db->update('videos');
}

Любые идеи или помощь были бы замечательными! Спасибо!


person Chris    schedule 11.04.2012    source источник
comment
Мой код был в порядке, у меня была устаревшая модель на рабочем сервере. Новейшая версия модели локально была правильной, это код, который вы видите выше. Спасибо за помощь ниже!   -  person Chris    schedule 11.04.2012
comment
Попробуйте включить профилировщик и посмотреть, что выполняется.   -  person kba    schedule 11.04.2012
comment
Я говорил в ближайшее время, это очень странно. Я только что заметил, что просмотры страниц корректно обновляются в FireFox, но дважды обновляются в Chrome. Как это вообще имеет смысл? Должно быть, я делаю что-то странное здесь...   -  person Chris    schedule 11.04.2012
comment
Я запустил профилировщик, и на странице выполняется только один запрос на обновление, и это для инкремента. Дубликатов нет. Может ли это быть проблема с поврежденной базой данных? Неважно, поврежденная БД тоже не имеет смысла, так как другие браузеры в порядке. Я здесь совершенно запутался.   -  person Chris    schedule 11.04.2012
comment
Похоже, это может быть проблема с самим Chrome: code.google.com. /p/chromium/issues/detail?id=64810 Буду рад любым идеям или решениям для решения этой проблемы, если у кого-нибудь они есть? Спасибо!   -  person Chris    schedule 11.04.2012
comment
stackoverflow.com/questions/2009092/ может эта ветка тоже поможет? Это ASP, но все еще актуально, я думаю.   -  person qwertzman    schedule 12.04.2012


Ответы (3)


Попробуйте поместить оператор echo (или log) внутри функции, чтобы увидеть, действительно ли она вызывается дважды. Дайте нам знать, если это эхо только один раз.

function increment_video_view($video_pk) {
    echo "We in increment_video_view";
    $this->db->where('video_pk', $video_pk);
    $this->db->set('views', 'views+1', FALSE);
    $this->db->update('videos');
}
person Catfish    schedule 11.04.2012
comment
Это показало только один раз, но я думаю, что нашел проблему. Должно быть, у меня была старая ошибка в коде несколько недель назад, и я никогда не обновлял новый файл модели, который был у меня в моем проекте. Теперь просмотры увеличиваются по одному. Глупая ошибка, я думал, что модель была обновлена. Спасибо! - person Chris; 11.04.2012
comment
Я отмечу вас как правильный ответ, поскольку он косвенно решил мою проблему, а эхо было умной и простой идеей, которую я должен был попробовать раньше. Спасибо! - person Chris; 11.04.2012
comment
FireFox обновляет просмотры страниц один раз, Safari обновляет просмотры страниц один раз, Chrome обновляет просмотры страниц дважды. Ваше эхо отображается только один раз во всех трех браузерах. Не знаю, что с Хромом... - person Chris; 11.04.2012

Вы уверены, что контроллер выполняется только один раз?

person Chalda Pnuzig    schedule 11.04.2012
comment
Я выполнил поиск по всему проекту, и метод increment_video_view() вызывается только один раз. Если вы спрашиваете, вызывается ли сам метод контроллера дважды, я искал, и он также вызывается только один раз. Метод контроллера, который вызывает страницу видео, и метод увеличения называется video(), он вызывается только один раз. Спасибо... - person Chris; 11.04.2012

Это происходит, когда у вас есть ссылка 404 (изображение/css/favicon) в вашем HTML или если у вас отсутствует favicon.ico

Chrome ищет favicon.ico, даже если вы не вставляете его в свой HTML, и когда обнаруживает, что он отсутствует, я думаю, он вызывает другой запрос.

person WebNovice    schedule 18.03.2013