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

  • Автор темы Автор темы grigori
  • Дата начала Дата начала
alekciy
все, хватит, cDLEON не ламер, он плохо формулирует свои фразы, влез не по теме, че троллить за это?
его логика ясна: хватает одного ядра и нет локов - работай в одном потоке, имеет право,
получат x5 траффика - быстро прозреют, а нет - ради бога! проблема-то стара как мир
 
Э нет, не нужно меня записывать в тролли. Не я тут целую партянку на 5 листа расписал. Поэтому оснований к такому обвинению нет. Я вижу, что он вполне себе адекватный без попыток обидется или поругаться и хочет разобраться, чем же его высказывания смущают публику. И я думаю нельзя не согласиться с тем, что в высказываниях там много "смущательных" моментов. Собственно только поэтому я решил нарушить молчание и попытался расставить в некоторых моментах точки над i. Надеюсь это получилось.
 
alekciy
а тут "че бог не дал - в аптеке не купишь", он неаккуратный и не слишком грамотный - все, этому не научить

это раньше программисты были инженерами, а недавно я сказал, что я инженер и думаю как ученый - так меня странным посчитали, и тоже адекватный и хороший человек
 
Так у "каждого процесса по одному" или все же "нет ни процессов ни тредов"?
Млин... Внутри цикла нет ни процессов, ни тредов. Такое ощущение, что меня понять просто не хотят :)
 
Кстати. Как думаете, почему в PHP нет тредов? И почему их не хотят делать?

Как минимум несколько возможностей новых появится, вплоть до GUI.
Или можно будет писать нормальные демоны, без переписывания логики на другой язык.
 
Кстати. Как думаете, почему в PHP нет тредов? И почему их не хотят делать?
Потому что основной нишей PHP было встраивание в контекст веб-сервера (и его тредов) т.е. он by design сам-себе тред
 
отому что основной нишей PHP было встраивание в контекст веб-сервера (и его тредов)
Основной нишей была шаблонизация. А потом он эволючионировал. Но некоторых вещей так и нет, которые были бы очень полезны. Куда как полезнее, чем примеси, к примеру.
 
Хочешь как пхп, но с тредами? Пиши на Lua ;)
Пишу на ней запоем третий вечер — восхитительный язык )
 
флоппик lua не понравился в роли самостоятельного языка. Его назначение - embedding.

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

Ну и это... libevent спасет тебя.
А в реалиях обычного веб-приложения? Ну хотя бы по аналогии с нодой? (PHP сейчас технически может то же самое, просто библиотек асинхронных нет для СУБД/etc)
 
Какие-то споры ни о чем вообще. Если мы пишем на PHP, у нас впереди фронтенд типа nginx который реализует событийную обработку соединений. Если мы выставляем голый пхп наружу - пишем событийную обработку на libevent сами. Никакой разницы с другими решениями, реализующими эту модель, за исключением языка программирования. Не нравятся мемкешы? Что мешает использовать в PHP шаренную память и точно так же агрегировать там что нужно. Мемкеши как бы не для этого используются, они - когда многосерверная конфигурация и сервера не могут жить отдельно (например, агрегировать по определенному пользователю).
Ну да, оверхед в случае nginx+PHP на быстрых операциях "принял, записал в шаренную память" огромен. Но, во-первых, это задача вполне откладывается на "когда приспичит", во-вторых, это совсем не повод делать кашу из языков. Скорее уж модуль для nginx писать - дешевле будет, ибо мультиплексирование уже реализовано, и быстро, ибо С. Ну или сказать спасибо фейсбуку.
Так что хрен знает о чем вы тут...
 
Если взять модель "баннерной системы", то как раз упереться в дисковый ИО можно только при огромном количестве инсертов. Я бы в таком случае попробовал бы минимизировать их количество ценой денормализации данных.
Если говорить о банерной системе, то ей нужно не только записать этот показ, но еще и решить - что же показать. А это гораздо более тяжелая логика, чем бросить сообщение на запись. Т.е. как бы не получилось, что эта замечательная оптимизация - экономия на спичках. Вот в netflow это используется и активно - тут выгода прозрачна.
 
Если мы пишем на PHP, у нас впереди фронтенд типа nginx который реализует событийную обработку соединений.
Не факт. Например в случае чата.

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

Не нравятся мемкешы? Что мешает использовать в PHP шаренную память и точно так же агрегировать там что нужно.
А что мешает нам просто использовать общую переменную без геморроя? Ответ: отсутствие нормальных потоков.
 
Ну да, оверхед в случае nginx+PHP на быстрых операциях "принял, записал в шаренную память" огромен.
Да нет, работает даже быстрее (в 2-4 раза), чем memcached через unix socket. И это вариант на PHP, если оформить С-шным расширением, думаю можно ускориться до 8 раз. Плюсы: быстр, позволяет разграничивать права доступа к кэшам. Минусы: не сетевое хранилище. Но в принципе и это решаемо, просто логику придется дописывать.
 
мне не приходилось с ним работать.
Поэтому вопрос: sleep(9999999...) в обработчике повесит демон или нет?
он событийный. ему слипы вообще не нужны.
А что мешает нам просто использовать общую переменную без геморроя? Ответ: отсутствие нормальных потоков.
Лол, а ты как думаешь потоки обмениваются данными треды? Как раз таки через шаренную память (как раз в упомянутой питонячьей реализации в этом треде по ссылке )
Не факт. Например в случае чата.
Тут проблема не в нжиксе или пхп, а в том, что HTTP — протокол без поддержания соединения по сути своей.
 
Я думаю, он говорил не про оверхед над мемкешем, а про оверхед над «написать все на питоне без веб-сервера»
Ну в таком контексте сравнивать не могу, с питоном дела не имел. Но то, что связыку nginx+php+memcached ускорить можно - факт.
 
он событийный. ему слипы вообще не нужны
Ну это понятно.
sleep = $db->query('SELECT SLEEP(99999...)')
А так?

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

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