EOMY.NET
Хостинг EOMY.NET: Форум поддержки
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
RSS Feed  

модуль смайлов
На страницу 1, 2, 3  След.
 
Начать новую тему   Ответить на тему    Список форумов EOMY.NET -> Программирование для WEB
модуль смайлов

Распознования смайлов должно производится на :
стороне сервера (php)
72%
 72%  [ 8 ]
стороне клиента (javascript)
27%
 27%  [ 3 ]
Всего голосов : 11

Автор Сообщение
антон888
Два пингвина
Два пингвина


Зарегистрирован: 05.11.2007
Сообщения: 311

13445 Монеты

СообщениеДобавлено: Ср, 02 Янв, 2008 18:54    Заголовок сообщения: модуль смайлов Ответить с цитатой

Пришла необходимость сделать на форуме (самописном) модуль смайлов. Встаёт вопрос о том как делать распознование смайлов в тексте (чтоб было масштобируемо и не напрягозно для сервера) Smile
Пока остановился на варианте, когда для каждого смайла делается замена на картинку с помощью поиска на регулярных выражениях(всё происходит на стороне сервера). Но так получается что полсотни раз (по количеству доступных смайлов) приходится делать поиск. Особых тормозов я не заметил пока, но чувствую что это далеко не самый рациональный способ...

Сейчас подумал о том, чтобы проводить поиск и замену на стороне клиента (яваскриптом), но тут встаёт проблема с подгрузкой картинок, на которые заменяются смайлы. Если их подгрузить (картинки) заранее, то лишний трафик..
Короче, у кого какие мнения по этому поводу? Как это лучше реализовать ? У мну уже башка болит по поводу оптимизации
_________________
сайт знакомств Забудь про фразу "Мне не с кем". Всегда есть с кем!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Roma-i-alena
11 1110 1000
11 1110 1000


Зарегистрирован: 03.05.2007
Сообщения: 1169
Откуда: vladimir
8115 Монеты

СообщениеДобавлено: Ср, 02 Янв, 2008 19:05    Заголовок сообщения: Ответить с цитатой

Цитата:
Пока остановился на варианте, когда для каждого смайла делается замена на картинку с помощью поиска на регулярных выражениях


Моё мнение, что это использование огромного молота для того, чтобы забить маленький гвоздик. Или использование проф.фотика ля того, чтобы сделать обычную фотку друзей. Но это, ИМХО!!!

Можно осуществять поиск и замену средствами PHP не прибегая к регуляркам - и это лучший вариант. Моё мнение что регулярки нужно использовать только в том случае, когда встроенные средства не справляются с задачей.

Ну а ежели ты шаришь в ЯваСкрипт - то вообще...
_________________
Жизнь никогда не заканчивается!!!
На то, собственно говоря, она и ЖИЗНЬ...
____________________________________
http://www.coderun.ru - Блог человека
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
[LP]LordPro.teus
Призрак Лорда
Призрак Лорда


Зарегистрирован: 26.07.2007
Сообщения: 5123

44732 Монеты

СообщениеДобавлено: Ср, 02 Янв, 2008 19:22    Заголовок сообщения: Ответить с цитатой

Все руль..)) лучше всего подгрузить на стороне клиента, AJAX'ом инструкцию по регулярным выражениям и пусть заменяет в уме... экономит не только ресурсы обоих сторон, но и электроэнергию
_________________

А ведь еще не поздно смотаться на Азовское море, согреться на солнышке...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
антон888
Два пингвина
Два пингвина


Зарегистрирован: 05.11.2007
Сообщения: 311

13445 Монеты

СообщениеДобавлено: Ср, 02 Янв, 2008 20:13    Заголовок сообщения: Ответить с цитатой

Roma-i-alena
ИМХО, рег. выражения сработают быстрее, чем, например, та же функция str_replace();
[LP]LordPro.teus
На связке AJAXa и JS было бы идеально, но лень париться. Плюс ущемляет масштабируемость и плюс не снимает нагрузки с сервера(AJAX будет грузить даже больше, чем PHP).
_________________
сайт знакомств Забудь про фразу "Мне не с кем". Всегда есть с кем!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
[LP]LordPro.teus
Призрак Лорда
Призрак Лорда


Зарегистрирован: 26.07.2007
Сообщения: 5123

44732 Монеты

СообщениеДобавлено: Ср, 02 Янв, 2008 20:14    Заголовок сообщения: Ответить с цитатой

антон888
я настаиваю на обработке рег.выражений пользователем по инструкции..) идеально масштабируемо, экономия кучи ресурсов, траффика и нагрузки сервера
Добавлено:
Согласно мануалам, str_replace функционирует быстрее прегов... хотя лично я использовал в свое время именно их... банально, по незнанию)
_________________

А ведь еще не поздно смотаться на Азовское море, согреться на солнышке...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
антон888
Два пингвина
Два пингвина


Зарегистрирован: 05.11.2007
Сообщения: 311

13445 Монеты

СообщениеДобавлено: Ср, 02 Янв, 2008 20:38    Заголовок сообщения: Ответить с цитатой

При использовании AJAXa мы увеличиваем количество обращений к серверу и не так важно, подгрузим ли мы просто какой-либо текст или скрипт, к которому обращается AJAX-запрос, будет выполнять сложный код, в любом случае, нагрузка от этого запроса быдет ощутимой.
Что касается рег. выражений против str_replace(); - всё зависит от объёма текста, поэтому лучше замерять скорость работы каждого из вариантов в каждом отдельном случае (как я и делаю).

Сейчас думаю, что идеальным вариантом решения задачи будет являться использование чистого JS. Теряем в масштабируемости, но я не думаю, что будет часто возникать необходимость в замене наборов смайлов для форума.
_________________
сайт знакомств Забудь про фразу "Мне не с кем". Всегда есть с кем!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Roma-i-alena
11 1110 1000
11 1110 1000


Зарегистрирован: 03.05.2007
Сообщения: 1169
Откуда: vladimir
8115 Монеты

СообщениеДобавлено: Ср, 02 Янв, 2008 21:13    Заголовок сообщения: Ответить с цитатой

Цитата:
Согласно мануалам, str_replace функционирует быстрее прегов... хотя лично я использовал в свое время именно их... банально, по незнанию)


100% - однозначно факт!!!

Цитата:
Что касается рег. выражений против str_replace(); - всё зависит от объёма текста, поэтому лучше замерять скорость работы каждого из вариантов в каждом отдельном случае (как я и делаю).


Laughing
А какой у тебя там объем текст для форума и смайлов. Что посетители пишут мегабайты текста???
_________________
Жизнь никогда не заканчивается!!!
На то, собственно говоря, она и ЖИЗНЬ...
____________________________________
http://www.coderun.ru - Блог человека
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
[LP]LordPro.teus
Призрак Лорда
Призрак Лорда


Зарегистрирован: 26.07.2007
Сообщения: 5123

44732 Монеты

СообщениеДобавлено: Ср, 02 Янв, 2008 21:23    Заголовок сообщения: Ответить с цитатой

Roma-i-alena
меньше гига - это чат... мы таких прогоняем) Laughing
_________________

А ведь еще не поздно смотаться на Азовское море, согреться на солнышке...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Stesh
Согнул ложку
Согнул ложку


Зарегистрирован: 22.07.2007
Сообщения: 956

1971 Монеты

СообщениеДобавлено: Чт, 03 Янв, 2008 02:06    Заголовок сообщения: Ответить с цитатой

[LP]LordPro.teus писал(а):
меньше гига - это чат... мы таких прогоняем)

А больше двух - это флудильщик? Laughing
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
[LP]LordPro.teus
Призрак Лорда
Призрак Лорда


Зарегистрирован: 26.07.2007
Сообщения: 5123

44732 Монеты

СообщениеДобавлено: Чт, 03 Янв, 2008 02:26    Заголовок сообщения: Ответить с цитатой

Stesh
нет... больше 1025Мб...
_________________

А ведь еще не поздно смотаться на Азовское море, согреться на солнышке...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alek$
11 1110 1000
11 1110 1000


Зарегистрирован: 24.11.2007
Сообщения: 1140
Откуда: Новосибирск
26958 Монеты

СообщениеДобавлено: Чт, 03 Янв, 2008 07:32    Заголовок сообщения: Ответить с цитатой

Я бы все же посоветовал юзать str_replace()
Причины:
1) Работает быстрее регулярок.
2) Если ей в качестве аргументов передавать массивы (первый - коды смайлика, второй - текст для замены), то заменит она все в один проход, при этом добавление новых смайлов станет элементарной задачей. При этом нагрузка на сервер будет минимальна.
3) Использовать JS не стоит, ИМХО, по 2-м причинам. Во-первых, как уже говорилось, подгрузка - это лишний запрос к серверу, во-вторых, в FF, например JS работает очень уж тормозно. Соответственно, посетители твоего сайта, юзающие FF будут не в восторге.
_________________
Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
AlfaUngzipper
Два пингвина
Два пингвина


Зарегистрирован: 23.02.2007
Сообщения: 370
Откуда: Halle (Saale)
4 Монеты

СообщениеДобавлено: Чт, 03 Янв, 2008 14:40    Заголовок сообщения: Ответить с цитатой

ответ кроется в старых компах с установленным ie6 на втором пне...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Roma-i-alena
11 1110 1000
11 1110 1000


Зарегистрирован: 03.05.2007
Сообщения: 1169
Откуда: vladimir
8115 Монеты

СообщениеДобавлено: Чт, 03 Янв, 2008 15:05    Заголовок сообщения: Ответить с цитатой

Цитата:
ответ кроется в старых компах с установленным ie6 на втором пне...


Ну и что же там за тайны у "старого пня"?? Laughing Laughing
_________________
Жизнь никогда не заканчивается!!!
На то, собственно говоря, она и ЖИЗНЬ...
____________________________________
http://www.coderun.ru - Блог человека
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
антон888
Два пингвина
Два пингвина


Зарегистрирован: 05.11.2007
Сообщения: 311

13445 Монеты

СообщениеДобавлено: Чт, 03 Янв, 2008 17:31    Заголовок сообщения: Ответить с цитатой

Alek$
Так и сделал изначально (так и остается пока на сей день), но тут не согласен по поводу скорости работы. Считайте сами:
имеем 53 смайла и 30 блоков текста (постов на странице в форуме)
итого грубо говоря в цикле имеем что-то вроде:

Код:

foreach ($smiles as $n=>$v)
{
   $st=str_replace($n,$v,$str);
}
 

и этот цикл приходится вызывать для каждого из блоков текста. Итого 53*30=1590 проходов =) Не мало ... Время генерации форума увеличивается на 120-150% (на моем сеплероне с 0.008 до 0.02 секунды)
Есть вариант сначала объединить все посты в один блок текста и потом пройтися по нему 53 раза. Выиграешь дает, но возникают трудности с обратным разбиением в результате объем кода увеличивается в разы.
Может я чего не понимаю ?
_________________
сайт знакомств Забудь про фразу "Мне не с кем". Всегда есть с кем!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Alek$
11 1110 1000
11 1110 1000


Зарегистрирован: 24.11.2007
Сообщения: 1140
Откуда: Новосибирск
26958 Монеты

СообщениеДобавлено: Чт, 03 Янв, 2008 17:41    Заголовок сообщения: Ответить с цитатой

php.net писал(а):
Если и search , и replace - массивы, то str_replace() использует все значения массива search и соответствующие значения массива replace для поиска и замены в subject . Если в массиве replace меньше элементов, чем в search , в качестве строки замены для оставшихся значений будет использована пустая строка. Если search - массив, а replace - строка, то replace будет использована как строка замены для каждого элемента массива search .


Т.е.:
Код:

function prase_smile($str)
{
   $smile_code=array();
   $smile_img=array();
   $smile_code[]=":)";   $smile_img[]="<img src='smile/smile.gif'>";
   $smile_code[]=":(";   $smile_img[]="<img src='smile/sad.gif'>";
   $smile_code[]=":lol:";   $smile_img[]="<img src='smile/lol.gif'>";
   //И так далее...
   $str = str_replace($smile_code,$smile_img,$str);
   return $str;
}


Таким образом мы получаем вместо 1590 проходов для 30 постов всего 30.
_________________
Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов EOMY.NET -> Программирование для WEB Часовой пояс: GMT
На страницу 1, 2, 3  След.
Страница 1 из 3

 


Rambler's Top100   Рейтинг@Mail.ru    



Powered by phpBB © 2001, 2005 phpBB Group