Мы в социальных сетях: Вконтакте Facebook Одноклассники LiveJournal Twitter Мой Мир

Как правильно класть плитку. Как класть плитку на стену быстро. Класть плитку своими руками. Как выбрать ламинат для квартиры. Какой лучше выбрать ламинат сегодня. Какого цвета выбрать ламинат. Как правильно клеить обои. Как клеить обои на потолок вертикально. Как правильно клеить углы обоями. Интересные самоделки своими руками. Качественные самоделки своими руками фото. Самоделки для дома своими руками. Как сделать потолок в доме. Чем лучше утеплить потолок дома на сегодняшний день. Утепление потолка дома своими руками. Бизнес идеи с минимальными вложениями. Успешные идеи малого бизнеса с нуля. Прибыльные бизнес идеи. Как сделать мебель своими руками. Сделать деревянная мебель своими руками. Сделать мебель своими руками видео. Опалубка для фундамента. Как сделать опалубку для фундамента быстро. Опалубка для фундамента купить.
Автор dr.MIG
dr.MIG
Врач-невролог, мануальный терапевт, спортсмен, администратор сайта и просто хороший человек
Пользователь не на сайте
Пятница, 03 августа 2012
в Блог

Адский инкремент

Нужно было сейчас добавить на одну из страниц одного проекта счетчик просмотров. Самый-самый простой: если кто-то запросил страницу, то увеличиваем на один предыдущее значение в базе. Но такая простая задача заняла ровно один вечер и одно утро и почти заставила меня поверить в сверхъестественное, прежде чем была реализована.

В качестве библиотеки для общения с базой MySQL на сайте используется библиотека activerecord. Соответственно весь код составил пару строк:

 $faq = Faq::find($id]);
 $faq->views++;
 $faq->save();

Т.е. получаем нужную запись, увеличиваем значение поля на один и сохраняем. При тестировании выяснилось, что счетчик посещений при заходе увеличивается не на один, а на два. Перепроверил на всякий случай структуру таблицы в базе данных, попробовал на всякий случай обновить значение другим способом (вдруг ошибка в библиотеке), погуглил по запросу «activerecord double increment problem», все бестолку. Непонимая, что может быть не так в коде ушел спать, так как обычно это помогает — за ночь мозг переосмыслит проблему и утром будет свежее решение. Как такового решения утром не оказалось и я уже был готов поверить в сверхестественное и выводить количество посещений как результат поля, деленный на два, но в очередной раз перезагружая страницу с этим адским счетчиком, в статусной строке браузера я заметил, промелькнувшее на мгновение слово «yandex». Да, я тестировал сайт в браузере Firefox, в котором была установлена панель RDS bar, которая как раз и дергала страницу, синхронно со мной, увеличивая счетчик еще на единицу...

P.S. Эта история попала на IT happens.

0 голосов
Врач-невролог, мануальный терапевт, спортсмен, администратор сайта и просто хороший человек

Комментарии

Чтобы добавить комментарий, сначала войдите, пожалуйста