@xuxubla

Как очистить error_get_last()?

Для парсинга есть функция, основанная на file_get_contents():
function load_file()
{ ....
        // Throw an error if we can't properly load the dom.
        if (($error=error_get_last())!==null) {
            $this->clear();
            return false;
        }
    }

Если какая-то из страниц не прогрузилась, выскакивает Warning. Информация падает в лог. Последующие страницы я не могу парсить,
потому что в логе навсегда сохранилась ошибка, в итоге функция всегда возвращает FALSE.
В описании функции error_get_last() есть пример, как можно очистить, но я не могу применить в своем коде:
foreach ($item as $link) {
    set_error_handler('var_dump', 0);
    @$error_clear
    restore_error_handler();
    $html = new simple_html_dom();
    $html -> load_file($link);
    if (!empty($html->root)) { parsing }

Очень надеюсь на помощь!
  • Вопрос задан
  • 261 просмотр
Пригласить эксперта
Ответы на вопрос 1
@justpusher
В описании (вернее, в комментарие) функции error_get_last имеется в виду не совсем очистка, а скорее приведение к определённому, известному значению. Т.е. нужно будет изменить код и сравнивать возвращаемое error_get_last значение не с null, а с известным значением (что-то типа "Undefined variable: error_clear".

В вашем случае советую поступить совсем по-другому. Перед вызовом установите set_error_handler на функцию, которая конвертирует все ошибки в исключения (пример есть здесь). После вызова нужной функции восстановите restore_error_handler. Если возникнет ошибка, будет брошено исключение. Словите его и примите меры.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы