Как проверить, что файл из цикла содержит ошибки - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть такая петля.На каждой итерации должен быть файл, включенные файлы могут содержать ошибки.Как только некоторые из включенных файлов получают ошибку, весь процесс теряется.Как предотвратить нарушение процесса?Я попытался поймать эту попытку, но ошибки из-за включенных файлов по-прежнему вызывают остановку выполнения файла.Спасибо

foreach ($li_arrays as $index => $li_array) {
    if($index == 0){

        try {
            require 'update.php';
        } catch(Exception $e) {
            echo "Exception caught with message: " . $e->getMessage() . "\n";
        }

    }
    elseif ($index == 1){
        try {
            require 'update1.php';
        } catch(Exception $e) {
            echo "Exception caught with message: " . $e->getMessage() . "\n";
        }
    }else{
        try {
            require 'update2.php';
        } catch(Exception $e) {
            echo "Exception caught with message: " . $e->getMessage() . "\n";
        }
    }

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

В конце я изменил «require» на «include» и использовал этот метод try-catch внутри каждого включенного файла.

$attempts = 0;

    do {
        try
        {
           ////PHP code ///
        } catch (Exception $e) {
            echo "\n\n======EXCEPTION======\n\n";
            var_dump($e);
            $attempts++;
            sleep(30);
            continue;
        }
        break;
    } while($attempts < 5);
0 голосов
/ 17 декабря 2018

Ошибки в php не восстанавливаются, поэтому они всегда будут приводить к завершению вашего скрипта.

Я даже не уверен, что вы даже говорите об ошибках, хотя если да, то это ответна ваш вопрос.

Еще одна вещь, о которой следует помнить: Require выдаст E_COMPILE_ERROR, если требуемый файл не существует, который вы также не сможете перехватить.Если вы не хотите завершать работу, если скрипт не найден, используйте вместо этого команду include.

...