Архив рубрики ‘mysql’

Timezone в PHP и MySQL – странный глюк

Вторник, 3rd Ноябрь 2009 |

Столкнулся с необходимостью работы в нескольких временных зонах одновременно. До этого момента как-то не задумывался на тем, для чего оно надо, пока не столкнулся с такой ситуацией: из mysql возвращается unxi_timestamp (число секунд, прошедших с начала unix-эпохи), на стороне mysql оно форматируется при выводе в одно время, а если форматнуть его с помощью функции PHP date() то получаем время с часовой разницей.

Это из-за того, что на сайте я задаю timezone отличную от той, которая используется в mysql с помощью функции date_default_timezone_set.
(далее…)

Связка MySQL 5.1 + Apache 2.2.11 + PHP 5.2.10 под Windows не работает!

Суббота, 1st Август 2009 |

Имеем свежеустановленный Apache 2.2.11 с PHP 5.2.10 (и PHP 5.3.0) + MySQL 5.1.0. Операционная система Vista Home Premium (но я предполагаю что актуально для всех версий Windows).

Проблема: при попытке открыть WEB страницу которой необходимо подключение к базе данных Apache падает, в журнале событий появляется ошибка:

Сбойное приложение httpd.exe, версия 2.2.11.0, штамп времени 0×493f5d44, сбойный модуль php5ts.dll, версия 5.2.10.10, штамп времени 0×4a3908cf, код исключения 0xc0000005, смещение ошибки 0×00096f85, ИД процесса 0×4f8, время запуска приложения 0×01ca12759c60e3ac.

(далее…)

Перенос базы Mediawiki – решение проблемы с кодировками

Понедельник, 5th Январь 2009 |

Так сложилось, что я уже несколько лет веду все личные и рабочие заметки в локально установленной Mediawiki. Как показал мой опыт это весьма удобно – можно набросать по-быстрому статью, в которую затем добавить дополнительную информацию (например графику), дополнить ссылками как внутренними так и внешними. И поиск есть. Получается такая википедия для внутреннего пользования, ценность которой с годами все возрастает и возрастает.

На днях я решил перенести мою Wiki на другой сервер, и столкнулся с неожиданными проблемами, которые растянули этот процесс на 3 дня.

(далее…)

Надо будет обязательно добавить поддержку mysqli в наш класс для работы с БД

Четверг, 5th Июнь 2008 |

Изучая возможности новых версий MySQL задался вопросом, – что же это такое mysqli? Как оказалось очень классная вещь!

К своему стыду я и не знал, что mysql с версии 4.1 поддержит предварительную подготовку запросов (prepare) и их последующее выполнение с передаваемыми параметрами. Пока не выяснил только, расшаривает ли сервер (по идее должен), подготовленные запросы для всех подключений. Это ведь может резко снизить нагрузку на базу данных!

Единственно что плохо – похоже не все хостеры поддерживают его даже на данный момент (на хостинге РБК, по крайней мере не увидел где его можно включить). Поэтому лучше написать класс-враппер, чтобы можно было легко переключаться на старый протокол работы с mysql.

Полезные ссылки: толковая статья по теме (оригинал тут).

MySQL: оптимизация запроса на обновление счетчика

Понедельник, 31st Март 2008 |

При сохранении различной статистики, довольно часто встречается задача обновить существующую запись а если она не существует – создать.

Например, существует таблица “test” с полями “day” (дата, без времени) и “counter” (число – счетчик). Есть уникальный индекс по полю “day”. Надо его увеличивать при наступлении какого-то внешнего события (у меня это downloads).

Довольно часто я применял такой метод – делаем SELECT (ищем запись в базе), если ее нет – INSERT, иначе – UPDATE. В последнее время стал использовать функцию PHP mysql_affected_rows(), а вчера увидел еще одно решение – всегда делается вставка, и если произошла ошибка дублирования ключа – выполняем UPDATE. (далее…)

MySQL & SUBDATE – проблемы оптимизатора?

Понедельник, 31st Март 2008 |

Сейчас обнаружил удивительную вещь, – если в условии запроса написать:

b.day >= SUBDATE(sysdate(),INTERVAL 31 DAY)

то MySQL почему-то не использует индекс, который создан по полю day, а если в текст запроса поместить константу:

b.day >= ‘2008-03-30′

тогда индекс используется!

Чудеса какие-то, вообще я ожидал что он только 1 раз вычислит результат функции SUBDATE и будет его использовать как константу, но не тут то было.. почему-то.

Вывод: используем константы в запросах, не умничаем знанием встроенных функций.

PS Версия MySQL 5.0.42

Об авторе

Меня зовут Владимир. Я живу в России, в г.Тольятти Самарской области. C 2004 года активно занимаюсь Web-разработками. Интересуюсь развитием сервисов Сети, технологиями создания и продвижения Интернет-ресурсов, компьютерными железками.. и не только ;)

Подпишись на обновления!

 RSS-канал / Email-рассылка
Поиск :