оффтоп из «php программист»

grigori

( ͡° ͜ʖ ͡°)
Команда форума
alekciy
все, хватит, cDLEON не ламер, он плохо формулирует свои фразы, влез не по теме, че троллить за это?
его логика ясна: хватает одного ядра и нет локов - работай в одном потоке, имеет право,
получат x5 траффика - быстро прозреют, а нет - ради бога! проблема-то стара как мир
 

alekciy

Новичок
Э нет, не нужно меня записывать в тролли. Не я тут целую партянку на 5 листа расписал. Поэтому оснований к такому обвинению нет. Я вижу, что он вполне себе адекватный без попыток обидется или поругаться и хочет разобраться, чем же его высказывания смущают публику. И я думаю нельзя не согласиться с тем, что в высказываниях там много "смущательных" моментов. Собственно только поэтому я решил нарушить молчание и попытался расставить в некоторых моментах точки над i. Надеюсь это получилось.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
alekciy
а тут "че бог не дал - в аптеке не купишь", он неаккуратный и не слишком грамотный - все, этому не научить

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

cDLEON

Онанист РНРСlub
Так у "каждого процесса по одному" или все же "нет ни процессов ни тредов"?
Млин... Внутри цикла нет ни процессов, ни тредов. Такое ощущение, что меня понять просто не хотят :)
 

Absinthe

жожо
Кстати. Как думаете, почему в PHP нет тредов? И почему их не хотят делать?

Как минимум несколько возможностей новых появится, вплоть до GUI.
Или можно будет писать нормальные демоны, без переписывания логики на другой язык.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Кстати. Как думаете, почему в PHP нет тредов? И почему их не хотят делать?
Потому что основной нишей PHP было встраивание в контекст веб-сервера (и его тредов) т.е. он by design сам-себе тред
 

Absinthe

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

флоппик

promotor fidei
Команда форума
Партнер клуба
Хочешь как пхп, но с тредами? Пиши на Lua ;)
Пишу на ней запоем третий вечер — восхитительный язык )
 

Absinthe

жожо
флоппик lua не понравился в роли самостоятельного языка. Его назначение - embedding.

Тут задача другая: нельзя использовать текущий PHP-код, делая демона: либо придется использовать синхронные тормозные запросы(что сразу поставит время отклика в бесконечность), либо переписывать их на другом языке(python/ruby/java).
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Тут задача другая: нельзя использовать текущий PHP-код, делая демона: либо придется использовать синхронные тормозные запросы(что сразу поставит время отклика в бесконечность)
А что есть «время отклика» для демона?
Ну и это... libevent спасет тебя.
 

Absinthe

жожо
А что есть «время отклика» для демона?
Время с получения запроса до окончания генерации ответа.

Ну и это... libevent спасет тебя.
А в реалиях обычного веб-приложения? Ну хотя бы по аналогии с нодой? (PHP сейчас технически может то же самое, просто библиотек асинхронных нет для СУБД/etc)
 

MiksIr

miksir@home:~$
Какие-то споры ни о чем вообще. Если мы пишем на PHP, у нас впереди фронтенд типа nginx который реализует событийную обработку соединений. Если мы выставляем голый пхп наружу - пишем событийную обработку на libevent сами. Никакой разницы с другими решениями, реализующими эту модель, за исключением языка программирования. Не нравятся мемкешы? Что мешает использовать в PHP шаренную память и точно так же агрегировать там что нужно. Мемкеши как бы не для этого используются, они - когда многосерверная конфигурация и сервера не могут жить отдельно (например, агрегировать по определенному пользователю).
Ну да, оверхед в случае nginx+PHP на быстрых операциях "принял, записал в шаренную память" огромен. Но, во-первых, это задача вполне откладывается на "когда приспичит", во-вторых, это совсем не повод делать кашу из языков. Скорее уж модуль для nginx писать - дешевле будет, ибо мультиплексирование уже реализовано, и быстро, ибо С. Ну или сказать спасибо фейсбуку.
Так что хрен знает о чем вы тут...
 

MiksIr

miksir@home:~$
Если взять модель "баннерной системы", то как раз упереться в дисковый ИО можно только при огромном количестве инсертов. Я бы в таком случае попробовал бы минимизировать их количество ценой денормализации данных.
Если говорить о банерной системе, то ей нужно не только записать этот показ, но еще и решить - что же показать. А это гораздо более тяжелая логика, чем бросить сообщение на запись. Т.е. как бы не получилось, что эта замечательная оптимизация - экономия на спичках. Вот в netflow это используется и активно - тут выгода прозрачна.
 

Absinthe

жожо
Если мы пишем на PHP, у нас впереди фронтенд типа nginx который реализует событийную обработку соединений.
Не факт. Например в случае чата.

Если мы выставляем голый пхп наружу - пишем событийную обработку на libevent сами.
мне не приходилось с ним работать.
Поэтому вопрос: sleep(9999999...) в обработчике повесит демон или нет?

Не нравятся мемкешы? Что мешает использовать в PHP шаренную память и точно так же агрегировать там что нужно.
А что мешает нам просто использовать общую переменную без геморроя? Ответ: отсутствие нормальных потоков.
 

alekciy

Новичок
Ну да, оверхед в случае nginx+PHP на быстрых операциях "принял, записал в шаренную память" огромен.
Да нет, работает даже быстрее (в 2-4 раза), чем memcached через unix socket. И это вариант на PHP, если оформить С-шным расширением, думаю можно ускориться до 8 раз. Плюсы: быстр, позволяет разграничивать права доступа к кэшам. Минусы: не сетевое хранилище. Но в принципе и это решаемо, просто логику придется дописывать.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
мне не приходилось с ним работать.
Поэтому вопрос: sleep(9999999...) в обработчике повесит демон или нет?
он событийный. ему слипы вообще не нужны.
А что мешает нам просто использовать общую переменную без геморроя? Ответ: отсутствие нормальных потоков.
Лол, а ты как думаешь потоки обмениваются данными треды? Как раз таки через шаренную память (как раз в упомянутой питонячьей реализации в этом треде по ссылке )
Не факт. Например в случае чата.
Тут проблема не в нжиксе или пхп, а в том, что HTTP — протокол без поддержания соединения по сути своей.
 

alekciy

Новичок
Я думаю, он говорил не про оверхед над мемкешем, а про оверхед над «написать все на питоне без веб-сервера»
Ну в таком контексте сравнивать не могу, с питоном дела не имел. Но то, что связыку nginx+php+memcached ускорить можно - факт.
 

Absinthe

жожо
он событийный. ему слипы вообще не нужны
Ну это понятно.
sleep = $db->query('SELECT SLEEP(99999...)')
А так?

Лол, а ты как думаешь потоки обмениваются данными треды? Как раз таки через шаренную память
Что? Потоки не обмениваются данными, они просто имеют доступ к ним.

Тут проблема не в нжиксе или пхп, а в том, что HTTP — протокол без поддержания соединения по сути своей.
Я привел в пример прикладную задачу, с которой можно справиться различными способами.
 
Сверху