Объединенный Открытый Проект - Сайт для Настоящих Компьютерщиков

Объединенный Открытый Проект

Сайт для Настоящих Компьютерщиков

; Логин:
  Пароль:
Обычный
Безопасный
Запомнить пользователя



Зарегистрироваться
Забыли пароль?
 
 
 
Объединенный Открытый Проект »   Программирование »   PHP »   Сравнение addslashes и mysql_real_ escape_string
RSS

Сравнение addslashes и mysql_real_ escape_string

С точки зрения производительности

Текущий рейтинг темы: Нет

<<Назад  Вперед>>Модератор: wsxПечать
 
4X_Pro
Руководитель Проекта
Настоящий Компьютерщик
4X_Pro
Откуда: Москва
Всего сообщений: 2994
Рейтинг пользователя: 79





Дата регистрации на форуме:
29 сен. 2001
Некоторое время назад перешел в Intellect Board (том самом движке, который стоит на этом форуме) с использования addslashes на использование mysql_real_escape_string. Через некоторое время обнаружилось, что выросло время генерации страницы, а также периодически стала возникать ошибки "не удается подсоединиться к MySQL-серверу localhost" и "Too many MySQL connections" (при этом в конфиге сервер совершенно не localhost).
Когда я стал разбираться, в чем причина, то обнаружилось следующее: у меня до установки соединения с MySQL вызывалась функция getvar, которая берет данные из массива _GET и экранирует их с помощью mysql_real_escape_string. Так как соединения на данный момент нет, то делалась попытка установить его с параметрами, прописанными в настройках php.ini по умолчанию, т.е. соединиться с localhost. Но поскольку на localhost MySQL сервера нет, то происходила некоторая задержка, в течение которой предпринималась попытка установить соединение. Именно эта задержка и приводила к тому, что с точки зрения PHP соединение существовало, и увеличивало общее количество соединений, что при наличии нескольких пользователей на сайте одновременно приводило к ошибке "Too many connections".
Короче, вывод тут такой: либо использовать add_slashes (если не используется кодировка UTF-8, то проблем с безопасностью возникнуть не должно), либо внимательно отслеживать возможность вызова mysql_real_escape_string до момента установки соединения с БД.

---
Каждый человек всегда может найти, чем он может быть полезен окружающим. Проблема только в одном: слишком многие не хотят это искать.
<<Назад  Вперед>>Модератор: wsxПечать
Объединенный Открытый Проект »   Программирование »   PHP »   Сравнение addslashes и mysql_real_ escape_string
RSS
Быстрый переход в раздел:


Время выполнения скрипта: 0.0197. Количество выполненных запросов: 18, время выполнения запросов 0.0110