Как проверить, работает ли функция в фоновом режиме? - PullRequest
0 голосов
/ 12 января 2020

Я работаю над проектом PHP Yii. В этом у меня есть функция ETL (в папке консоли, которая вызывается из контроллера внешнего интерфейса), которая требует больше времени для выполнения througly, так как она вызывает много зависимых функций и выполняет много хранимых процедур при выполнении с журналами хода выполнения функции. По завершении полного выполнения я устанавливаю флаг успеха в таблице базы данных, а при сбое я хочу установить его как неудачный. Вместо того, чтобы писать блоки try try на всех необходимых шагах и функциях, можем ли мы проверить, перестала ли выполняться функция между ними, чтобы мы могли обновить флаг как неудачный.

frontend / controller:

$test = exec('php _protected/yii client-integration/run-client>/dev/null 2>&1 & echo $!', $output);
        // Return will return non-zero upon an error
        if ($test > 0) {
            print_r($test);
            echo "Success";
        } else {
            print_r($test);
            echo "Failed";
        }
        display($test);

$ test всегда возвращает сообщение об успешном выполнении (если блокируется) с идентификатором процесса, хотя я возвращал подверженный ошибкам код в консольном методе, т.е. в методе run-client.

...