1
Я написал скрипт PHP, который будет проходить через ок. 500 URL-адресов и проверить их состояние:Получить эффективный URL-адрес и его статус с помощью cURL
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_exec($ch);
$destURL = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo $destURL . " - " . $statusCode;
Может ли это быть оптимизировано дальше или есть лучший способ сделать это?
выглядит, как вы забыли 'curl_exec ($ ч)'! Другой способ может заключаться в использовании 'curl_multi_exec', но проблема в том, что ответ от curl_multi_info_read не очень полезен. Curl_multi_exec позволяет обрабатывать URL-адреса параллельно, поэтому должен быть быстрее – RamRaider
@RamRaider Я добавил оператор 'curl_exec ($ ch)' в вопросе. Он должен был быть таким, просто забыл поставить его здесь в вопросе. Я также планировал использовать 'curl_multi_exec', но я не могу понять, как его реализовать, поскольку мне нужен окончательный эффективный URL-адрес и их статусы. – littleibex
У меня была небольшая игра с curl_multi ... некоторое время назад (был занят, поэтому задержка), но, как вы уже упоминаете, вы не можете легко возвращать эффективный URL-адрес или статус http, и, как я уже сказал, curl_multi_info_read почти бесполезен – RamRaider