За последние 24 часа нас посетили 18838 программистов и 1731 робот. Сейчас ищут 1346 программистов ...

Тайд или кипячение?

Тема в разделе "Прочее", создана пользователем Koc, 29 окт 2008.

  1. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    это доп. функция.. она вообще может быть без рассматриваемых нами шаблонов.. она вообще всё что угодно может делать.. на что твоей фантазии хватит :)

    ещё раз:
    1) сокращение кода
    2) страховка от забывчивости
    3) возможности что-то эдакое с этими запросами делать (например кэшировать... или на мыло себе отправлять :D )
    4) можно написать что-то мульти-БДшное, что диалект одной БД будет переделывать в диалект используемой БД

    замерь 10К стандартных запросов из php скрипта со sprintf и без, и поймёшь, что параноишь ;) потери по производительности в данном случае ничтожно малы и ими можно принебречь.. )
     
  2. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    и это говорит человек, которого напрягает потеря производительности sprintf'a? :D
     
  3. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ну и зачем мне это функция с sprintf ?
    я лучше её сделаю без....
    не всегда
    например?
    кешируют не запросы, кешируют то что они возвращают, для этого вовсе не нужно никаких sprintf'оф
     
  4. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    скорее регулярок чем sprintf
     
  5. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    каждый раз руками вставлять mysql_real_escape_string() на каждый параметр короче?

    например забыл mysql_real_escape_string() :)

    не доёбывайся до слов, а, ты же понял о чём я? ;)
     
  6. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    напиши функцию ;)
    Код (Text):
    1. function s($str) {
    2. return mysql_real_escape_string($str);
    3. }
    ок, но это сложно - забыть
    не совсем =)
    если о кешировании данных, то я уже несколько раз говорил что шаблоны sql тут ни как не помогают
     
  7. dAllonE

    dAllonE Guest

    Vitas, наверное у меня какой-то неправильный SQL. Он переменную $id='dskf'; не приводит почему-то к INT'y.


    Mr.M.I.T., опять же повторюсь, что на вкус и цвет все фломастеры разные и спор бессмысленен. :) А теперь по пунктам:

    потеря производительности думаю куда как больше чем у goDB. Так что сам себе противоречишь. :)
    А по поводу без экранирования - вставяться нормальные данные и нормально потом извлекуться и диссериализуются :)

    Не знаю, наверное я какой-то неправильный, но у меня переменных не более 3-х 4-х в запросе и я между ними не путаюсь.

    В конце концов я тут не проверяю, например, является ли данная строка URL-ом или доменом, я просто обезопашиваю себя от дыр в безопастности. А проверка на спец символы и проч. пускай будет в одно единственном месте, ибо в большом проекте раскиданные по всем местам mysql_escape_string() смерти подобны.

    P.S. в таблицы очень редко подставляю ?t , но у них есть приятная фича - потом делаешь
    $db->setPrefix("prefix_"); и вуаля у всех таблиц появился нужный префикс :)
     
  8. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    dAllonE, а ты попробуй вставить значение 'string' в INT'овое поле. Что получится?
     
  9. dAllonE

    dAllonE Guest

    Vitas, вот что получиться:

    [sql]
    INSERT INTO test
    SET id =123,
    category = 'dskfe'

    Ответ MySQL:

    #1366 - Incorrect integer value: 'dskfe' for column 'category' at row 1
    [/sql]
     
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    кстати в sprintf можно вставлять одну и ту же переменную в несколько мест - это плюс
    а как с этим в goDB ?
     
  11. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    зачем вообще вызов доп. функции?
    в чём сокральный смысл? религиозные убеждения?
    а если у меня там 8 параметров, мне 8 строчек mysql_real_escape_string() нужно писать, или s() как ты предлагаешь?


    писал - торопился проверить, хотел по 8 строчек у каждого запроса добавить позже :)


    я говорю исключительно про обёртку. засунь туда поддержку memcached.. да хоть на диск сливай
     
  12. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    dAllonE, это всё из-за Strict mode в MySQL 5. Не знал об этом, а ведь раньше всё было пучком. %(
     
  13. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    пиши прямо в запросе
    всёравно у тебя mysql_real_escape_string 8 раз отработает
    а я что против доп. функций? я против sql шаблонов
     
  14. dAllonE

    dAllonE Guest

    Ну знаешь проще в одном единственном месте методе query в goDB прикрутить кэширование, чем потом по проекту в 100тыс.+ строк отлавливать все места с mysql_query :p

    Увы клянчил у vasa_c такую возможность (в моей допотопной либе, слизанной с примеров в книге Шлосснейгла для работы с БД, она была кстати, но она куда как медленней goDB работала).
     
  15. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ещё раз, кеширование делаешь в доп. функции (обёртке :)) т.е. в методе query например, я как раз ЗА это
    но я говорю, что sql шаблоны в кешировании никак не помогают!
     
  16. dAllonE

    dAllonE Guest

    Ладно что-то я забил с этим спором на работу. Так что удаляюсь.

    Будем считать что все победили, т.к. каждый остался при своем мнении :)
     
  17. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    хорошо =)
    итог такой,
    Вы используете sql шаблоны только потому что ВАМ так удобнее =)
    практической пользы они не приносят
    ну кроме как помогают не забыть обезопасить данные
     
  18. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    и зачем мне столько раз писать?
    сколько она отработает - я не считаю, я давно уже не параноик, по теме вещей, которыми можно принбречь ))
    меня волнует краткость и удобность для себя любимого :)

    практическая польза - писать каждый сайт на C как модуль Апача
    а php мы используем только потому, что нам так удобнее ))

    короче действительно думаю пора закончить спор.
     
  19. dAllonE

    dAllonE Guest

    Mr.M.I.T., чорт ну никак не могу не откомментить. :)

    Что такое практическая польза? :)

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

    Это спор из серии (ой чувствую ща еще один холивар будет) как автомат vs механическая коробка передач:

    В гоночной машине безусловно механическая рулит, а вот в 2-х часовой пробке до города? :)
     
  20. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    так ты всёравно будешь писать ?s или как там
    я согласен что написать ?s это удобнее чем ".s($var)." но всёравно на метод запроса нужно переносить только обезвреживание данных, т.е. ББ коды и прочее нужно заменять ДО
     
  21. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    не все сообщения перенёс =))
    а вообще мы уже пришли к выводу...почти
     
  22. dAllonE

    dAllonE Guest

    29843+ mysq_real_escape_string по всему проекту офигенно функциональнее и гибче :)))
    Так же как таскать за собой 2 или 3 ссылки на подключение при работе с несколькими БД и т.д. и т.п. ;)
     
  23. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    с mysq_real_escape_string я лично понял что без разницы, потому как мне например удобнее обезопасить данные перед запросом, кому-то удобнее написать ?s...
    но вот регулярки для парсинга sql шаблона... =\
    Зачем? я же не против "обёртки" это всё в ней
     
  24. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP - скриптовый язык, поэтому быстрее всего работают на нем именно скрипты, а не программы! 8)
     
  25. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    я вообще не говорил как пишу лично я ;)
    я просто говорю о том, что во всём есть свои плюсы и свои минусы, и всегда нужно выбирать исходя из ситуации, не впадая в параною, где без неё можно обойтись, и незыблимые теоритические аксиомы придуманные неизвестно кем ;)

    потому что так какой-то авторитет когда-то сказал? :)
    обоснуй почему нужно :?:

    регулярки - действительно могут оказаться большим тормозом.. если запросов много и часто.. тут спору нет.. считать всё надо