![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Приветствую!
Недавно написал статейку о том как сделать ajax чат на php. Ссылка: http://blog.elfet.ru/jquery/php-ajax-chat/
Это сообщение отредактировал(а) Elfet - 31.10.2009, 12:10 |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
у тебя страница разлетелась в ИЕ7 в пух и прах
|
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Да, точно, подправил.
|
|||
|
||||
| bars80080 |
|
||||||||||||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
по смыслу не могу сказать, только по оформлению
вообще, довольно плохой тон пихать запросы прямо в функцию. если вы кого хотите чему-то научить, то нужно стараться продемонстрировать наиболее корректный код. в особенности с точки зрения отладки
|
||||||||||||
|
|||||||||||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Собственно, где там статья? Там только код, не считая вступления. Конечно комменты есть, но это не помогает учащемуся понять алгоритм
|
|||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
||||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
youri, видно слишком вольный перевод слова depricated
|
|||
|
||||
| Elfet |
|
||||||||||||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Да, возможно. Суть статьи не в этом
Думаю что это каждый может сообразить
В нём глубокий, скрытый смысл
Я вообще обычно использую плейсхолдеры. Забыл про этот _real_
Какая интересно ошибка? Кстати как я получил принт-скрин? Думаю тут это излишне.
Да, точно это нужно исправить
Это и есть статья. Нет, конечно же можно вынести комменты из кода, разбив сам код на кучу раздельных строк mysql_real_escape_string правильно работает с многобайтовыми кодировками. |
||||||||||||||
|
|||||||||||||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
да и я, в общем-то согласен, что mysql_real_escape_string лучше использовать, но не обязательно. Можно почитать вот это |
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
| 02077461 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 13.7.2005 Репутация: нет Всего: 0 |
Я уже забыть успел что такое запросы. Работаю на symfony+doctrine, переходил с небольшим скрипом, но зато когда почувствовал что это действительно дает -- не могу оторваться.
Обсуждение правильности запроса и использование real_escape... для меня это во вчерашнем дне. Очень рекомендую. Использование фреймворка дает много плюсов, может быть стоит начать его использовать? |
|||
|
||||
| NewDima |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 922 Регистрация: 20.2.2006 Где: <?here?> Репутация: 10 Всего: 12 |
Представляю,с какогй скоростью у тебя работают и без конструктора сложные запросы. |
|||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 6 Всего: 16 |
||||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
||||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Код совершенно не понравился.
Комментировать код не умеем: додумался комментировать даже синтаксис, типа циклов. много лишнего кода, например считывание из базы в массив. Незнание синтаксиса SQL и обход незнания через array_reverse.
Не понравилась спичечная "типа оптимизация"(прирост ибо 0%) конкатенации строки в ухудшение читаемости. |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
+ 1. если у тебя и твой чат так построен то за что тебе деньги платят (за такой код мне лично жалко платить)?! 2. Если размещаешь статью, то размещай её на форуме -------------------- Amazing |
|||
|
||||
| Elfet |
|
||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Нет, совсем не лишний. Нет, синтаксис построен так как мне удобно было бы объяснить работу кода.
"типа" я не понял про что вы?
Мне платят за работу которую я проделал при проектировании, программировании и кодировании чата. MoLeX, скопировал. |
||||
|
|||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Неужели? |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
nerezus, я не вижу причин тому что бы называть мой код "через задницу".
|
|||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
google://ORDER BY
|
|||
|
||||
| bars80080 |
|
|||
![]() прапор творюет ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Завсегдатай Сообщений: 12022 Регистрация: 5.12.2007 Где: Königsberg Репутация: 71 Всего: 315 |
||||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Вы что, неужели думаете что я не знаю что такое ASC и DESC?
По тому что вы увидели у меня в коде только DESC|array_reverse и не поняли зачем это, я могу судить о том что вы ещё мало разбираетесь в программировании вообще и в кодинге на php. |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
Я как бы тоже не понял. Поделитесь таинством? Добавлено через 4 минуты и 10 секунд А зечем много раз дергать DOM дерево? Почему не собрать одну строку и не аппендить ее один раз? -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Тут согласен. Можно сделать и так, возможно это даже лучше когда у нас 10000 сообщений за раз приходит, однако больше 10 у меня за раз прийти не может, так что я думаю тут это не критично. Дело в том что иначе усложняется SQL запрос для выбора последних N сообщений. |
|||
|
||||
| solenko |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
А что будет если пользователи будут писать более 10 ссобщений в 2 секунды? Пользователь никогда не увилит актуальное состояние чата? Зачем вообще нужел limit?
Я сразу и внимания то не обратил. Вопросы по этому поводу выше. -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
||||
|
|||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
точно. я даже и не обратил внимание. -------------------- Amazing |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
solenko, более 10 сообщений в 2 секунды - это уже спам, это не нужно добавлять в базу уже.
А LIMIT 10 нужен затем что бы при первой загрузке не показывать пользователю всю базу целиком, а только последние 10 сообщений. |
|||
|
||||
| nerezus |
|
||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 12 Всего: 43 |
Elfet,
|
||||
|
|||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
В своей реализации я решил сделать именно так, так как мне кажется для объяснения принципов лучше, а нагружать код всякими излишними наворотами не нужно. Добавлено через 2 минуты и 48 секунд Используя DESC и LIMIT я убил двух зайцев - начальную инициализацию (загрузку последних 10 сообщений, получение id последнего сообщения) и подгрузку новых сообщений. |
|||
|
||||
| solenko |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
1. А цифры вы инженерно-потолочным способом определяли? 2. Даже если это спам, то данные все равно будут вставлятся в базу, а вот полезное сообщение, полученное после него, пользователь не увидит 3. Вы или не застал эпоху чатов, либо просто никогда не бывали на популярном чате. Такое количество сообщений -- мелочи Добавлено через 2 минуты и 48 секунд
Как раз таки для учебного процесса лучше объяснить, что инициализация чата и получение сообщений -- разные подзадачи Добавлено через 3 минуты и 58 секунд
нет, вы убили других двух зайцев: внесли ненужные ограничения на функционал и сделали код нелогичным -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
||||||
|
|||||||
| Elfet |
|
||||||||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Вы знаете другой способ?
Нет, УВИДИТ! Если за 2-е секунды пришло больше 10 сообщений, то сначала он получит первые 10, а затем, в следующую загрузку остальные.
Эпоху чатов застал. Но никогда не общался в чате с таким напором сообщений.
По моему мнению - нет, не нужно.
Какие ограничения? Совершенно логичным. |
||||||||
|
|||||||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
да, а если на чате сидит 1000 человек и интенсивно общаются, то в 1-сек будет куда больше 10 мессаг -------------------- Amazing |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
MoLeX, навряд ли одни общаются каждый с каждым. Если этот чат больше походит на чат один к одному, то тут лучше использовать демона и долгие опросы (long poll)
|
|||
|
||||
| holms |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 7.11.2009 Репутация: нет Всего: нет |
Хорошая статья, все принципы работы чата понятны, возьму как основу и доделаю. Большой респект автору за jquery, так как основной фреймворк на сайте =)
|
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: -1 Всего: 17 |
а как на счет websockets и push server, long-pull, aka Comet ?
стоит ли заморачиватся с этими двумя или делать на аяксе обычном? 1) http://habrahabr.ru/blogs/webdev/79038/ 2) http://javascript.ru/ajax/comet/overview и http://habrahabr.ru/blogs/webdev/41223/ Это сообщение отредактировал(а) gcc - 28.3.2010, 18:41 |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
gcc, смотря что вам нужно. Если у вас только виртуальный хостинг, то ничего кроме аякса у вас пока не будет работать. Если же свой сервер то конечноже comet (long pulling) является желательным.
В новой версии моего чата можно выбирать то на чём он будет работать, на простом аяксе (частые опросы) или на comet (длинные запросы). |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |