PHP 7.4 не правильная работа get_headers()

Алексей Теплов
На сайте с 30.12.2019
Offline
38
241

Сначала объясню для чего и как я использую get_headers().

У меня сайт с музыкальными клипами Ютуба. В конце кода страницы исполнителя или клипа я сделал проверку когда последний раз проверялись обновления и если прошло более 2 дней, то запускаем чекер обновлений командой get_headers($url). Почему командой get_headers(), а не инкладом? Да потому что чекер довольно долго отрабатывает, он скачивает автоплейлист исполнителя, все альбомы с композициями и постеры к ним и в конце уже создаёт новый кешь страницы. Всё хорошо работало больше года, но сегодня при попытке открыть страницу одного исполнителя, сайт "завис" секунд на 20-30! Пока не отработался чекер! Чекер с Ютубом работает через его стандартный API, но лимит на ключь доступа к API зарезали до 10к, а это очень мало, поэтому я юзаю 100 ключей... В чекере я сделал ошибку, если при запросе к Ютубу получаю 403 ошибку, то начинаю перебор ключей доступа, но тут ошибка не ключа доступа, а сам канал заблокирован, то есть 403 ошибка канала, а не ключа! Чекер через курлы перебирает всё 100 ключей доступа, но почему не отдается заголовок при этом? Как такое может быть?

Буду очень благодарен если кто ни будь подскажет как можно из файла php запустить паралельно другой файл php? Чекеру нужно передать только один параметр это id исполнителя, всю полученную инфу чекер не куда не передаёт, просто записывает в БД. Браузерные варианты не подходят, ну типа через скрипт JS или через картинку с редиректом. Чаще всего чекер запускают поисковые боты, а они не запускают JS скрипты и не грузят картинки...

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1

Для того, чтобы проверять 403 не нужно вам хеадер проверять. CURL уже без вас всё сделал. 

https://www.php.net/manual/ru/function.curl-getinfo.php

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Алексей Теплов
На сайте с 30.12.2019
Offline
38
#2

Я проверяю хедер лишь с одной целью - запустить параллельно другой php файл!

А в заголовке ответа на файл cheker.php нет 403 ошибки, да я и не проверяю ответ собственно...

Алексей Теплов
На сайте с 30.12.2019
Offline
38
#3

Выполнив

$url = 'https://site.ru/cheker.php?id='.$id;

get_headers($url);

exit;

я запускаю файл cheker.php и не дожидаюсь окончания работы этого скрипта, он всё равно на экран не чего не выдаёт, все обновы пишет в базу, а если выполнить include_once("cheker.php"); то пришлось бы ждать несколько секунд, а то и все 30 сек., когда скрипт отработает и только после этого получить страницу сайта.

lutskboy
На сайте с 22.11.2013
Offline
171
#4

паралельно запустить скрипт не дожижаясь его окончания работы можно с помощью socket или curl. 

выстави таймаут 1сек 

Алексей Теплов
На сайте с 30.12.2019
Offline
38
#5

1 секунда это очень много в нынешних реалиях... Обдумываю пока вариант с кроном.

Мне просто интересно, по какой причине запрос заголовка не проходит? Из за того что ли, что вызываемый скрипт запулил серию из 100 запусков курлов?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий