работа с WebSocket в Ratchet и PHPDaemon

hell0w0rd

Продвинутый новичок
не v8, в node. Легковесные потоки тоже можно сделать в userland, но ты же понимаешь, что это не то)
 

fixxxer

К.О.
Партнер клуба
Ну, в браузере тоже евент луп есть. Не суть :) Единственное отличие от node тут в явном управлении этим самым евент-лупом. Чуточку больше кишки наружу (но и гибче), а так смысл тот же.

Легковесные потоки тоже можно сделать в userland, но ты же понимаешь, что это не то)
Ну, с await-ом с точки зрения удобства уже почти то :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Понимаешь, @hell0w0rd, проблема с твоими утверждениями - невоспроизводимость.
Реальность - это то, что не перестает существовать когда мы перестаем в это верить.
Ты веришь, что node лучше, чем reactphp - да, это так, а fixxxer не верит - и у него иначе. Это не реальность.

Я ж не одну сотню проектов написал уже на разных языках, и демонов на php я еще с php4 писал. Меня интересует научный подход. Числа.
У Флоппика были проблемы с затыком в zmq при 1000 соединений, значит, zmq работает плохо - это реальность.

Нет чисел, нет примера - это не реальность, а мнение.
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Если бы на js существовали полноценные фреймворки, можно было бы изначально все на TypeScript написать, но, простите, для nodejs нет даже ни одной реализации data mapper ORM.
Отсутствие полноценных фреймворков аналогично Симфони/Django/Spring - это главное, что меня сдерживает относительно ноды.

ORM, вроде, есть http://docs.sequelizejs.com/en/latest/ - но толку от него без интеграции с фреймворком.
 

hell0w0rd

Продвинутый новичок
@grigori,
thumbor is a smart imaging service. It enables on-demand crop, resizing and flipping of images.

It also features a VERY smart detection of important points in the image for better cropping and resizing, using state-of-the-art face and feature detection algorithms (more on that in Detection Algorithms).

Using thumbor is very easy (after it is running). All you have to do is access it using an URL for an image, like this:

http://<thumbor-server>/300x200/smart/s.glbimg.com/et/bb/f/original/2011/03/24/VN0JiwzmOw0b0lg.jpg

That URL would show an image of the big brother brasil participants in 300x200 using smart crop.
 

hell0w0rd

Продвинутый новичок
У Флоппика были проблемы с затыком в zmq при 1000 соединений, значит, zmq работает плохо - это реальность.
или, при всем уважении к флоппику, он настроил zmq не правильно. Или этот вариант не рассматривается?
 

hell0w0rd

Продвинутый новичок
Да, libevent. Обновил код, и перезапустил тест, чтобы было понятно.
Правда это php5.6, под 7 соберется все это дело?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
нет, libevent под 7ку не собирается, и, судя по ответу Тони, в обозримом будущем не будет
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Как-то у тебя сильно просело. У меня на том же (правда, с ext/event) ~1200 (php) против ~2400 (node) RPS, что ожидаемо вполне. Меня такая плата за повторное использование кода вполне устраивает.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
не вижу смысла в application server делать соединение с базой на каждый вызов - это дольше, чем запрос
может, нода управляет пулом соединений, а в php это надо писать руками
 

fixxxer

К.О.
Партнер клуба
Вот именно в случае js датамаппер особо нужен. Activerecord-модели не получится использовать на клиенте. (Сумасшедшие извращения хипстокретинов с абстракциями типа "сделаем единое апи для mongodb и local storage" предлагаю не рассматривать всерьез).
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
в такой формулировке это уже имеет практический смысл
действительно, полностью дублировать AR на клиенте невозможно, а голый DM/value object - нормально
 

Вурдалак

Продвинутый новичок
Не, я могу понять, если чистые domain models работают где угодно (что им помешает?)
Я бы сказал, что это достаточно спорно.

Во-первых, ты в явном виде раскрываешь модель с её богатым API, изменением состояния, событиями. Это может быть вредно для бизнеса.
Во-вторых, появляется серьезная зависимость от клиента. Всякие приложения для iOS будут требовать стабильного API, в то время как API, в котором, насколько я понял, ты будешь напрямую передавать состояние агрегата, будет меняться с изменением самого агрегата.
В-третьих, API, который будет работать с состоянием агрегатов, может быть достаточно многословным. Если агрегат в себе содержит пару-тройку сущностей, то по-хорошему ты должен будешь передавать их все даже для простых операций.
В-четвертых, если ты, например, придерживаешься CQRS, у тебя скорее всего есть какой-то command bus и все действия выражены в командах. Но команда посылаемая с клиентской стороны и внутренние команды могут (и нередко будут) отличаться. Опять какая-то искусственно созданная зависимость от клиента.
 

fixxxer

К.О.
Партнер клуба
Да, все так. Для классической трехзвенки это неприменимо (или применимо довольно сложно и бессмысленно).

Я думал о такой модели в контексте многопользовательской realtime системы, когда модель раскрывается по определению, сервер играет в основном инфраструктурную и транспортную роли, а состояние агрегатов синхронизируется между клиентами. Но это пока очень сырая мысль, я ее еще думаю :)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
Углубился я на неделю в исследование всех этих асинхронных движков, и понял, чего мне не хватает.
В JS вообще отсутствуют прототипы, тайпхинты, и любые другие способы формализации API. Для клиентской части это нормально, но серверный код становится викториной.
Например, тут session и extra - обхекты, а method - строка. Для сравнения, на php это наглядно.
Народ находит утешение в генераторах - они упрощают код, но соглашения остаются неявными.

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

Питон где-то посередине - типы есть, но тайпхинтов нет, только аннотации, и я не разобрался сходу как они работают.

Хорошо бы таки сделали для php нормальные асинхронные движки. Иначе альтернативой с oop становится консервативная java с раздражающим приведением скаляров.
Go сырой, на нем даже простой рекурсивный http-робот с регулярками написать - не так просто.

@hell0w0rd, как на ноде обеспечивается целостность API и полиморфизм?
 
Последнее редактирование:
Сверху