Всё об ICQ и OperaMini
Именные будильники для CCBot/2.0
Бар «Двойной инкремент»
Нужно было добавить на одну из страниц проекта счётчик просмотров. Самый-самый простой: если кто-то запросил страницу, то увеличиваем на один предыдущее значение в базе. Но такая простая задача заняла ровно один вечер и одно утро, почти заставив меня поверить в сверхъестественное, прежде чем была реализована.

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

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


Получаем нужную запись, увеличиваем значение поля на единицу и сохраняем.

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

Решения утром не оказалось, и я уже был готов поверить в сверхъестественное и выводить количество посещений как значение поля, делённое на два, но в очередной раз перезагружая страницу с этим адским счётчиком, в статусной строке браузера я заметил промелькнувшее на мгновение слово «yandex». Да, я тестировал сайт в Firefox с установленной панелью RDS bar, которая дёргала страницу синхронно со мной, увеличивая счетчик ещё на единицу.
< предыдущая история | следующая история >
IT happens
На главную
0,0073 сек.
HTML | XHTML
© FaceWAP.Net 2016
WapLog