55:10 Кстати, посмотрел почему debug:true в http падал. Оказалось все просто, проблема в примере который использовали на стриме. Было while (true) { try { $request = $psr7->waitRequest(); } catch (\Throwable $e) { $psr7->respond(new Response(400)); continue; } .... $psr7->respond(....); } И вот здесь $request может быть null, возможно именно в момент ребута это и происходит и отправляется в RR resonse $psr7->respond( и он подвисает в этот момент. Короче надо было добавить проверку на null для $request
Было бы интересно сравнение с FrankenPHP. Также интересно почему у RR такой слабый перформанс(понятное дело, что он выше чем php-fpm), и большое потребление памяти относительно FrankenPHP, Swoole. Ведется ли работа в этом направлении.
Используйте prometheus базу. Эти метрики не предназначены для ручного вычитывания. Их надо брать не сырыми со страницы, как тут, а из базы, а там эти обнуления учитываются и автоматически корректируются.
Смотришь эти картинки и вроде понятно. По итогу нихера не понятно. Хочется посмотреть видос с каким-то микро бложиком с использованием roadrunner и symfony например. С обьяснениями чем это лучше и тд. Этот знаменитый вывод хелоу ворлд в консоль ничего не обьясняет.
На самом деле все стримы что ты здесь проводили, на всех мы пишем код и используем при разработке Roadrunner, так что примеров уйма. Стримы про микросервисы все с использованием rr
рр это костыль, написанный на го, потому что пхп нормально не может работать демоном точнее приложение на пхп не может работать многопоточным демоном на го ты бинарник скомпилил и он сам по себе весь в себе запускается и работает шустро и хттп там как бы его основа
Ну как бы не провал. Метрики же уходят в prometheus. Для counter мы же смотрим сумму или diff между днями. Сумму вывести не проблема и diff между днями тоже, так что не должно создавать проблем. Надо будет сделать стрим где мы это потестируем.
Prometheus метрики так и должны работать. Prometheus сам понимает, когда счетчики обнуляются и каждый раз вносит корректировки в графики так, что в базе данных эти сбросы вообще не отражается.
Твой совет очень важен для нас. Спасибо, что открыл глаза. Всем срочно учить go! А по факту здесь многие, уверен, знают go, в том числе и я и не совсем как это мне поможет. Мне нравится ООП в PHP и ту быстроту с которой можно решать задачи. Каждый язык для своих целей. Если нравится go, пиши на нем. Если я тебе посоветую учить C#, ты же не пойдешь его учить?
Спасибо большое за такое видео и особенно за ответы на мои вопросы на стриме, очень жаль, что rr не так популярен на рынке
55:10 Кстати, посмотрел почему debug:true в http падал. Оказалось все просто, проблема в примере который использовали на стриме.
Было
while (true) {
try {
$request = $psr7->waitRequest();
} catch (\Throwable $e) {
$psr7->respond(new Response(400));
continue;
}
....
$psr7->respond(....);
}
И вот здесь $request может быть null, возможно именно в момент ребута это и происходит и отправляется в RR resonse $psr7->respond( и он подвисает в этот момент. Короче надо было добавить проверку на null для $request
01:48:24 В лейблах метрики не нужно указывать ключи. Именно поэтому у меня падало.
а как привязать доменое имена? или для этого все равно будет nginx?
Было бы интересно сравнение с FrankenPHP. Также интересно почему у RR такой слабый перформанс(понятное дело, что он выше чем php-fpm), и большое потребление памяти относительно FrankenPHP, Swoole. Ведется ли работа в этом направлении.
Вопрос по поводу метрик, а не умеет роадранер где-то их вроде редиса хранить, чтобы не обнулялись при рестарте?
Привет, вроде нет, но я тоже о таком думаю, т.к. это тоже не хватает. Надо будет сдать rfc на это
@@php-farttime да, очень нужная вещь. Если разработка активно ведется, то рестарты ведь регулярные и каждый раз метрики обнуляться будут.
Используйте prometheus базу. Эти метрики не предназначены для ручного вычитывания. Их надо брать не сырыми со страницы, как тут, а из базы, а там эти обнуления учитываются и автоматически корректируются.
а про swoole знаем и зачем он нужен нашему приложению ?
))) Хочешь стрим про Swoole? Будет почти все тоже самое. Хотя он немного по другому работает в LongRunning
А в чём уважаемый автор рисует красоту?
excalidraw.com
В моем случае это плагин для obsidian
Смотришь эти картинки и вроде понятно. По итогу нихера не понятно. Хочется посмотреть видос с каким-то микро бложиком с использованием roadrunner и symfony например. С обьяснениями чем это лучше и тд. Этот знаменитый вывод хелоу ворлд в консоль ничего не обьясняет.
)))) тебя уже ничего не спасет. Иди в бизнес
На самом деле все стримы что ты здесь проводили, на всех мы пишем код и используем при разработке Roadrunner, так что примеров уйма. Стримы про микросервисы все с использованием rr
рр это костыль, написанный на го, потому что пхп нормально не может работать демоном
точнее приложение на пхп не может работать многопоточным демоном
на го ты бинарник скомпилил и он сам по себе весь в себе запускается и работает шустро и хттп там как бы его основа
Очистка метрик после рестарта РР это провал
Ну как бы не провал. Метрики же уходят в prometheus. Для counter мы же смотрим сумму или diff между днями. Сумму вывести не проблема и diff между днями тоже, так что не должно создавать проблем. Надо будет сделать стрим где мы это потестируем.
Prometheus метрики так и должны работать. Prometheus сам понимает, когда счетчики обнуляются и каждый раз вносит корректировки в графики так, что в базе данных эти сбросы вообще не отражается.
@@luzrain О, круто, спасибо, что доуточнил!
А может просто выучить go?
Твой совет очень важен для нас. Спасибо, что открыл глаза. Всем срочно учить go!
А по факту здесь многие, уверен, знают go, в том числе и я и не совсем как это мне поможет. Мне нравится ООП в PHP и ту быстроту с которой можно решать задачи. Каждый язык для своих целей. Если нравится go, пиши на нем. Если я тебе посоветую учить C#, ты же не пойдешь его учить?
@@php-farttime посмотри практики перехода с php на go, ооп это мнимая полезность
@@php-farttime обертка приложения ради обертки и нагрузка дополнительными плагинами, сам же роадранер написан на go.