![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
webevt |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 235 Регистрация: 5.5.2005 Репутация: нет Всего: 3 |
nerezus, я что-то пропустил? Эти функции уже устарели? А какие новые? P.S. Не сарказм, действительно интересно.. |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
webevt, Библиотек, которые "за тебя" сделают mysql_real_escape_string дофига. Я пользуюсь библиотекой DbSimple от Котерова и очень доволен, тут тебе и трассировка запросов и подсчет времени исполнения... Однако, когда мне приспичило сделать 6000 запросов в цикле, и я начал профилировать получившийся тормозной кисель, выяснилось, что на полезности и вкусности в таких фреймворках тратится довольно много рессурсов. Когда я честно преписал "циклический" запрос на "чистый" mysql_query, для 6000 запросов в цикле результат меня просто поразил...
Это я про то, что DB-обертки, конечно, очень помогают жить, но нужно понимать, что в некоторых случаях, их магия может мешать... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Как бы есть mysqli и pdo, которые
1) Безопасность. Можно не бояться забыть заэскейпить данные. 2) Можно использовать все возможности мускула типа курсоров. 3) ООП. 4) Через них работают Zend_Db и т.д. Добавлено через 1 минуту и 23 секунды
Вместо уменьшения числа запросов до десятка ты решил убить удобство. Не понимаю такого. Добавлено через 2 минуты и 51 секунду ksnk, эм, ты говоришь про обертки, а я - про mysqli и pdo. Так вот, на каких это основаниях они должны быть медленнее? Это не надстройка, а просто продуманная и удобная альтернативная либа. |
|||
|
||||
linuxoid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 17.4.2005 Репутация: нет Всего: нет |
нашел интересную информацию:
Т.е. получается так, как я написал выше - делать ненадо... т.е. надо просто сделать trim() и mysql_real_escape_string или mysqli_escape_string() перед вставкой, а при выводе данных, если нужно, делать htmlspecialchars() ? |
|||
|
||||
ksnk |
|
||||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
А в том случае была вставка в таблицу с множеством полей записей с небольшим количеством разных полей, тоесть навскидку сократить количество запросов объединением не получалось. nerezus, в mysqli автоматический escaping параметров достигается комбинацией prepare-bind-execute? В таком случае, у Котерова несколько удобнее сделано "приведение типов". Тип параметра (квотить+ескейпить/неквотить), указывается в самом теле запроса, и сам запрос с параметрами - одна функция, а не размазан по 2-м строчкам.
и
Ну, конечно, да. Mysqli, который требует отдельной установки своего расширения вряд ли будет сильнее тормозить, чем чистый mysql. Да и PDO, который начинается с 5-го PHP, тоже тормозить, по идее, не должен... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
||||||
|
|||||||
nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
А все потому, что ты использовал обертку к устаревшей библиотеке. 1) pdo поддерживает multiply statements. mysql не поддерживает. 2) LOAD DATA INFILE для особо крупных вставок. 3) Отсутствие смысла делать кучу инсертов многократно.
|
||||
|
|||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
nerezus, Можно и поспорить ;-) Я посажу тебя на свой хост с php4 и mysql3, и посмотрим как будут вставляться туда PDO'шные классы...
А схему вставки я переделал через неделю после разборок с SimpleDb. Просто тупо вклеивал недостающие поля в массив, после чего получился один (~10 кил) запрос на вставку... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
php4 умер более чем 2 года назад, а юзающие его - некрофилы. |
|||
|
||||
morfus |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 71 Регистрация: 30.6.2007 Репутация: 1 Всего: 2 |
||||
|
||||
linuxoid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 17.4.2005 Репутация: нет Всего: нет |
Ребята побазарьте в сторонке... жесткий офтоп пошел... :/
|
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
linuxoid, так какая база данных у тебя? postgres или mysql?
|
|||
|
||||
linuxoid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 17.4.2005 Репутация: нет Всего: нет |
У меня постгрес. Исходя из того, что я здесь прочел и нашел полезного в интернет, вывод сделал такой:
Что думаете по этому поводу? |
|||
|
||||
nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
magic_quotes специально, блин, отключили, чтобы их не проверять - так нет же, свою функцию пишут. Правильно работать с ней так: предположить ее значение как false. Если по какой-то причине она true, то выключается через настройку в панели хостинга. Либо через .htaccess. Но уже стоит подумать о таком хостинге плохо при этом. |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
По-моему, в интернете ты нашел кучу бесполезного.
function prepareData работать не будет в таком виде. почему у тебя stripslashes выполняется два раза, а trim - даже три? одного разве не достаточно? |
|||
|
||||
linuxoid |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 17.4.2005 Репутация: нет Всего: нет |
Потому что я не использую сразу все ф-ии из тех, что я написал. Каждая используется в соотв-х обстоятельствах.. stripslashes, по идее вообще не нужно делать, когда берем данные из базы...
В общем если бы я сейчас получил из формы текст, который нужно вставить в базу, то я бы его пропустил через prepareText(). Т.е. делаем трим и эскейп А если нужно было бы его вызвать из базы и показать на экране, то воспользовался бы этой ф-ей...
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |