Странное поведение при работе с консолью

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

Странное поведение при работе с консолью

Сообщение Cacatuidae »

Приветствую всех!

Есть: (все упрощено до минимума, чтобы понять проблему)
1. Action метод WEB контроллера, в котором есть код:

Код: Выделить всё

    public function actionTestConsole()
    {
        $command = 'php /var/www/p1/yii test/test-console > /dev/null 2>/dev/null &';
        var_dump('Command: ' . $command);
        shell_exec($command);
    }
2. Action метод СONSOLE контроллера, в котором есть код:

Код: Выделить всё

    public function actionTestConsole()
    {
        var_dump('Sleep on');
        sleep(60);
        var_dump('Sleep off');
        var_dump(time());
    }
Проблема заключается в том, что после запуска WEB экшена, весь сайт через ВЕБ становится недоступен для пользователя, который запустил команду. Причем, сам ответ WEB экшена происходит мгновенно благодаря > /dev/null 2>/dev/null &, но если нажать ф5, или запустить другую страницу в браузере, то придется ждать все 60 секунду пока не завершится работа консольного экшена. Т.е. хронология такая:
1. Запуск site.com/site/test-console -> мгновенный ответ (страница загрузилась, код 200)
2. Запустился консольный метод с sleep(60);
3. Запуск site.com/news - ожидает пока закончится работа консольного метода

Кто-нибудь сталкивался с таким? Что за прикол) PHP7.1
Аватара пользователя
Cacatuidae
Сообщения: 65
Зарегистрирован: 2017.01.08, 17:39

Re: Странное поведение при работе с консолью

Сообщение Cacatuidae »

Та это не то. У него слипы в веб-контроллере, это нормальное поведение для них. У меня же консольные слипы.

У меня проблема исчезла сама собой после перезагрузки php7.1-fpm. Не знаю какая может быть связь, но факт - теперь работает нормально.
Ответить