- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

В 2023 году 36,9% всех DDoS-атак пришлось на сферу финансов
А 24,9% – на сегмент электронной коммерции
Оксана Мамчуева

Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Написал парсер, тестирую. Иногда ловлю ошибку, которую не могу понять.
В начале парсера есть функция
Далее идет цикл, сразу вверху цикла запрос к сайту который паршу и далее разбираю элементы.
НИже раз 5 вызывается функция newDateFormat. Иногда одна и так же запись может отработать нормально, а иногда вывалиться с ошибкой PHP Fatal error: Uncaught Error: Call to a member function getTimestamp() on bool
Как ее понимать - в функцию передана пустота? Но как такое возможно еще запрос в самом верху цикла? Что тут можно сделать?
иногда
это здесь ключевое на сколько мне видится.
мы лишь видим вырванный откуда-то кусок. неизвестно что за $oldFormat залетает в эту функцию? например?
пока пример есть лишь у меня:
засылаем в функцию "левак" и вот она ваша ошибка:
т.е. копать нужно в сторону того что там заходит в функцию.
как вариант добавить лог типа такого:
file_put_contents('log.txt',"$oldFormat\n",FILE_APPEND);
и после очередного пойманного бага, смотрите в лог - наверняка там какой-то мусор иногда залетает
Если метод createFromFormat не может распарсить строку с датой, он возвращает false. Вы же обращаетесь потом сразу к этому значению, вызывая метод getTimestamp.
Добавьте промежуточную переменную и в нее записывайте распарсенную дату, делайте проверку и если дата не false, вызывайте метод getTimestamp
Можно еще посмотреть сообщение с ошибкой, почему не получилось распарсить дату
https://www.php.net/manual/ru/datetime.getlasterrors.php
смотрите передаваемые данные.
насколько я понял код функции, данные должны быть строго вида "03 марта 2000"
1. дата в 2 знака, для однозначных с ведущим нулем - обязательно
2. месяц с маленькой буквы
3. год в 4 знака
иные представления даты не распарсятся.
Главное что смущает - вот ловлю я ошибку, смотрю страницу на которой ее поймал, но там дата в нужном формате, запускаю парсер заново и он без ошибок проходит эту же страницу, где только что вывалился с ошибкой. Вот этот момент мне и не понятен. То есть ошибка, то нет... Такое впечатление что как бы не успевает распарситься перед вызовом функции, но это же бред...