piromanlynx
@piromanlynx
Системный администратор в Perfect Solutions

Как поймать ошибку в корн-скрипте и не упасть в Error?

Есть скрипт который запускается в крон. Он вынимает данные из базы (список), бежит по списку с помощью foreach и выполняет операцию над каждым элементом списка. При выполнении операции над одним из элекментов может выпасть ошибка — соответственно скрипт падает и не дорабатывает до конца. Псевдокод:
$all = getData();
foreach ($all as $one){
   $one->doSomething(); //вот тут оно может упасть и не продолжить скрипт.
}


Суть — хочется перехватить ошибки: Error, Warning, Notice, Fatal Error, отписать в лог и продолжить работу над остальными элементами списка.
Как это можно реализовать?

P.S. Именно ошибки, а не исключения!
  • Вопрос задан
  • 3132 просмотра
Решения вопроса 1
piromanlynx
@piromanlynx Автор вопроса
Системный администратор в Perfect Solutions
Пока сам придумал тупой способ отфоркать процесс:

foreach ($all as $one) {
    $pid = pcntl_fork();
    if ($pid == -1) {
       die('could not fork');
    } else if ($pid) {
      pcntl_wait($status); //Protect against Zombie children
      continue;
    } else {
      $one->doSomething(); 
      exit(0);
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ArtEx
@ArtEx
Если я правильно понял задачу, можно использовать set_error_handler('log_error'), где `log_error` — ф-ция, которая Ваши ошибки запишет в лог-файл.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽