- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Сделал скрипт для поиска отсутствующих изображений. Ссылок больше тысячи.
Но все ссылки проверить скрипт не успевает "Fatal error: Maximum execution time of 180 seconds exceeded in".
Он их скачивает что-ли? Как можно ускорить процедуру? Мне нужен только заголовок, а не весь файл.
Как можно ускорить процедуру?
Лучше не ускорять, а распределять
время выполнения на много запусков.
Настроить запуски скрипта через cron например,
и обрабатывать один адрес за каждый запуск.
Если у Вас VPS/VDS, увеличьте время выполнения скрипта. Если хостинг, тоже можно попробовать. А иначе - да, распределять нагрузку.
Для получения только заголовков без тела ответа в HTTP используется метод HEAD (так, например, менеджеры закачки обычно определяют размер загружаемого файла без его скачивания).
В то же время, судя по документации php http://php.net/manual/ru/function.get-headers.php#example-4594 функция get_headers() использует метод GET, т.е. скачивает файлы. По ссылке на документацию есть способ заставить её использовать метод HEAD.
Поможет это или нет - я не знаю, теоретически должно.
Если вам это надо просто периодически делать - я бы наверно в сторону отдельных программ посмотрел, типа wget, curl (http://stackoverflow.com/questions/6136022/script-to-get-the-http-status-code-of-a-list-of-urls)
дома у себя запустите. сняв лимиты.
или сделайте вызов самого себя.
получили 10(не суть сколько) заголовков. потом скрипт вызвал самого себя с указанием новой стартовой точки
curl
Так?
$ch = curl_init($file);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo $retcode;
curl_close($ch);
Так не помогло, HEAD тоже не помог, только что ошибка не показывается, а так останавливается примерно на том-же номере файла.
Ну проверяйте за раз 50 урлов из списка, потом эти 50 урлов из списка удаляйте (перезаписью файла 'свой_сайт/урлы.txt').
Урлы, которые отвечают не 200 - пишите в файл 'свой_сайт/плохие_урлы.txt', а не на экран
Задачу в крон, каждые две минуты
Через полтора-два часа получите итоговый результат в 'плохие_урлы.txt'
colorito, не, я хотел каждую ночь кроном этот скрипт запускать. А если это будет полтора часа длиться то ну его нафиг :)
Ну и пусть он круглосуточно дергает каждые две минуты
Добавьте в начало скрипта if ((date('G') < 2) or (date('G') > 4)) { die(); }
И будет работать с 2 до 4 утра, в остальные случаи - пустой вызов.
Утром проснулись - на хостинге файл со списком битых урлов.
colorito, не, я хотел каждую ночь кроном этот скрипт запускать. А если это будет полтора часа длиться то ну его нафиг :)
Так?
Я про отдельную программу curl.
Скриптом формируете список урлов и через exec дергаете внешнюю утилиту. По второй ссылке в моем посте есть скипты для wget и curl'а.