• Как работает SSR-Rendering в NODEJS и почему он отличается от PHP?

    @kirill-93 Автор вопроса
    Robur, Вот как я проверяю:
    Взял страницу about с текущего проекта. Там только текст и картинки. Никакой логики нет, никаких обращений на сервер нет.
    Положил эту страницу в /pages на nuxt, собрал, запустил через pm2 cluster mode и запустил нагрузочный тест ab -n 1000 -c 100. Результат ~ 200 запросов в секунду.
    Теперь я беру эту же страницу, создаю роут в laravel и по адресу /about отдаю ее. Тест ab -n 1000 -c 100 выдает уже ~940 запросов в секунду.
    Я, к сожалению, не могу перенести что-то более сложное с nuxt на php, потому что на это нужно время.
    Я не могу сравнить и оценить работу рендера nuxt, у меня недостаточный уровень знаний, чтоб открыть исходный код и разобраться в нем, я поверхностно знаком с nodejs.
    Поэтому я и обращаюсь сюда с вопросом: почему рендеринг обычной текстовой страницы на php в 4-5 раз быстрее, чем на nuxt? Ну или по-другому: "Действительно ли рендеринг обычной страницы на php в 4-5 раз быстрее, чем на nuxt"? Потому что мне в первую очередь важно понять не почему так, а действительно ли так, потому что у меня подозрения, что это я что-то не так сделал.
    Вместо ответа мне предлагают посмотреть на код рендера, использовать кэширование и еще кучу всего.
    И ваш ответ я тоже не понимаю. Вы говорите:

    SSR-это запуск фронтендового js-фреймворка на ноде заранее,(вместо работы в браузере) и отдача клиенту того что получилось, вместе с фреймворком, дальше все это продолжает работать на клиенте.
    на php этого просто нет.

    Фреймворк - это что? Обработка роутинга, затем запуск кода, выполнение кода, получение каких-то результатов и отдача получившегося клиенту.
    Чем запуск js фреймворка на сервере отличается от запуска php фреймворка на сервере? У js фреймворков код хуже написан или nodejs медленнее, чем php?
  • Laravel 5.8 требует php7.2?

    @kirill-93 Автор вопроса
    Максим Федоров, На сервере несколько проектов запущено. Обновление - это риск, что что-то сломается. Тем более, что в документации ларавел указана версия 7.1
  • Laravel 5.8 требует php7.2?

    @kirill-93 Автор вопроса
    Konata Izumi, Подскажите пожалуйста, как это сделать. У меня ведь ее нет в composer.json, doctrine/lexer как зависимость качается для egulias/email-validator, который как зависимость указан для нескольких пакетов, в том числе и ларавел.
  • Laravel 5.8 требует php7.2?

    @kirill-93 Автор вопроса
    Андрей Подскажите пожалуйста, как это сделать. У меня ведь ее нет в composer.json, doctrine/lexer как зависимость качается для egulias/email-validator, который как зависимость указан для нескольких пакетов, в том числе и ларавел.
  • Как работает SSR-Rendering в NODEJS и почему он отличается от PHP?

    @kirill-93 Автор вопроса
    SSR-это запуск фронтендового js-фреймворка на ноде заранее,(вместо работы в браузере) и отдача клиенту того что получилось, вместе с фреймворком, дальше все это продолжает работать на клиенте.
    на php этого просто нет.


    Давайте разберем:
    Запуск фреймворка на сервере. - Ну запуск и запуск, PHP тоже на сервере запускает php-framework.
    дальше все это продолжает работать на клиенте - ну то что это продолжает работать на клиенте ведь никакой нагрузки на сервер не создает. Сервер отдал разметку и все
    отдача клиенту того что получилось, вместе с фреймворком - вот тут единственная разница с PHP. PHP просто отдает разметку, а тут еще и весь код. Это увеличивает размер данных, но существенно влиять на должно.

    Я пытаюсь понять разницу между PHP и серверным рендерингом на Node. Вот из вашего ответа разница только в объеме ответа сервера.
  • Как работает SSR-Rendering в NODEJS и почему он отличается от PHP?

    @kirill-93 Автор вопроса
    Что значит "несколько сложнее"? Почему сложнее?
  • Как верно вставить элемент в HTML-код через Javascript?

    @kirill-93
    document.body.header.nav.ul
    это некорректный селектор, так найти элемент нельзя
  • Как в Laravel продублировать exception?

    @kirill-93 Автор вопроса
    Алексей, Это именно то, что мне нужно! Я не знал, что можно написать throw $e
  • Как организовать работу в команде через git?

    @kirill-93 Автор вопроса
    Алексей Тен, по git flow гуглится конкретный пакет "git flow", который ставится отдельно от git. Вы о нем говорите? :)
  • Должны ли логи оставаться чистыми?

    @kirill-93 Автор вопроса
    Daria Motorina, Смотрите, вы предлагаете так:

    $email = request()->input('email');
    
    $exists = User::where('email', $email)->exists();
    
    if ($exists) {
        return 'красивое сообщение об ошибке';
    }
    
    User::create(['email' => $email]);


    Я предлагаю так:
    $email = request()->input('email');
    
    try {
        User::create(['email' => $email]);
    } catch (\Exception $e) {
        if ((int)$e->getCode() === 23000) {
            return 'красивое сообщение об ошибке'; 
        } else {
            Log::error($e);
        }
    }


    Вот пришло ко мне 100 запросов и из них только один дубликат. В вашем случае это будет 100 запросов на проверку, а моем ни одного запроса.
    Если не хайлоад - то это в принципе не важно, но почему бы и без хайлоада не использовать второй вариант? Определяем что дело в дубликате и отправляем информацию об ошибке, в противном случае (нештатная ситуация) пишем в лог.
  • Должны ли логи оставаться чистыми?

    @kirill-93 Автор вопроса
    Daria Motorina, Но ведь вместо проверки можно обернуть в try-catch и в catch анализировать ошибку.
  • Должны ли логи оставаться чистыми?

    @kirill-93 Автор вопроса
    Arman, Нет, это АПИ. Пользователь шлёт аякс запрос и видит, что "что-то пошло не так, повторите попытку"
  • Должны ли логи оставаться чистыми?

    @kirill-93 Автор вопроса
    Вы предлагаете проверять перед каждым созданием наличие такой записи? Это же оверхед.
  • Должны ли логи оставаться чистыми?

    @kirill-93 Автор вопроса
    Я всегда не понимал зачем делать проверку, если мы на уровне БД сделали ограничение? Объясните, пожалуйста.
    Это же дополнительная нагрузка, еще один запрос. Я ведь вместо этого могу в catch смотреть сообщение об ошибке и, если это дублирование уникального поля", то отдавать пользователю адекватное сообщение.
  • Что если пользоваться одной лицензией PhpStorm на разных ПК?

    @kirill-93 Автор вопроса
    you may run multiple personal licensed copies of the IDE at the same time across multiple operating systems (like on laptop and desktop for remote debugging client/server apps).

    Вы об этом? Ну тут ведь про разные операционные системы и подразумевается что дебаг.
    А я спрашиваю, могу ли я своему коллеге, который за соседним столом сидит, дать мой ключ.
  • Почему PhpStorm требует установки расширения для curl и json?

    @kirill-93 Автор вопроса
    Так эта замена настоящим библиотекам php? То есть я могу не устанавливать php7.2-curl, а вместо этого установить этот пакет через композер?
  • Как сделать мягкое удаление и использовать уникальные ключи?

    @kirill-93 Автор вопроса
    vism, такие советы без аргументов никакой ценности в себе не несут. Я не нашел в комментах ничего толкового.
  • Как сделать мягкое удаление и использовать уникальные ключи?

    @kirill-93 Автор вопроса
    vism, скажите пожалуйста, чем вариант с использованием scope лучше варианта с использованием events?
    Мой вариант достаточно прописать в одном месте, shouldBeUniqueAndItIs, который предложил автора ответа, нужно добавить в каждый запрос. Да это более наглядно, но мой вариант гарантирует блокировку на уровне СУБД, даже если кто-то руками захочет сделать insert, а shouldBeUniqueAndItIs проверяет все только в контексте использования Eloquent.
    Вариант несомненно хороший, но говорить что он единственно верный - это лишнее.
  • Как уйти от использования async в js?

    @kirill-93
    async: false как раз останавливает скрипт, пока не получит ответ из скрипта