Intereting Posts
Где размещать массивы с постоянной стоимостью, которые будут доступны во много раз? Как я могу разделить строку с разделителями-запятыми на массив в PHP? Улучшение канала Twitter JSON Скрыть '<input type = "hidden" name = "userIP" value = "<? Php echo $ _SERVER ; ?> "> 'Из элемента проверки Получение только определенной части тела электронной почты с использованием imap_body PHP MySQL Google Chart JSON – полный пример Выберите узел xml по атрибуту в php mysql_select_db () ожидает, что параметр 2 будет ресурсом, объект указан crontab при использовании сценария exec php? Невозможно отобразить греческие символы .mdb file (PHP & ODBC) nl2br () эквивалентно в javascript Как обрабатывать Неустранимая ошибка: ошибка cURL 7: Не удалось подключиться к порту xxxx 443 OpenTBS Несколько страниц повторного шаблона, содержащего таблицу Как передать полный список / иерархию ролей безопасности в класс FormType в Symfony2? Ошибка сертификата SSL: самоподписанный сертификат в цепочке сертификатов с использованием Twilio на моем веб-сайте Laravel

Проверьте, существует ли изображение на удаленном URL-адресе

Я создаю динамические URL-адреса изображений для книжных ISBN. Мне нужен надежный способ с PHP, чтобы проверить, действительно ли изображения существуют на удаленном URL-адресе. Я пробовал различные подходы с различными библиотеками PHP, завитки и т. Д., Но ни один из них не работает хорошо, некоторые из них совершенно медленны. Учитывая тот факт, что мне нужно сгенерировать (и проверить!) Около 60 URL-адресов для каждой книги в моей базе данных, это огромное время ожидания. Любые подсказки?

function checkRemoteFile($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); // don't download content curl_setopt($ch, CURLOPT_NOBODY, 1); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if(curl_exec($ch)!==FALSE) { return true; } else { return false; } } 

-> это самый быстрый способ, если ваш хост поддерживает завиток

Используйте метод getimagesize (), подобный этому

 $external_link = 'http://img.ruphp.com/php/example.jpg'; if (@getimagesize($external_link)) { echo “image exists “; } else { echo “image does not exist “; } 

Здесь нет «простого» способа – по крайней мере, вам нужно сгенерировать запрос HEAD и проверить полученный тип контента, чтобы убедиться, что это изображение. Это не учитывает возможные проблемы с реферерами. завиток – это путь сюда.

Вы можете использовать завиток . Просто установите для параметра curl CURLOPT_NOBODY значение true. Это будет пропускать информацию о теле и получить только голову (таким образом, http-код). Затем вы можете использовать CURLOPT_FAILONERROR, чтобы превратить весь этот процесс в проверку истинного / ложного типа

Вы можете использовать getimagesize ()

Кредит: http://junal.wordpress.com/2008/07/22/checking-if-an-image-url-exist/

Я делаю это для моего отслеживания картирования недвижимости …

 $im = @imagecreatefromjpeg($pathtoimg); if($im) imagedestroy($im); // dont save, just ack... elseif(!$missing[$inum]) $img404arr[] = $inum; 

Он «кажется» быстрее, чем загрузка фактического изображения, и занимает около 0,3 секунды для каждого из изображений, которые avg 100k.

Хотел бы я просто сделать проверку заголовка и узнать, получаю ли я 200 против 404, не загружая ничего. У кого-нибудь есть это?

Наверное, это немой момент, но это работает для меня:

 function is_webfile($webfile) { $fp = @fopen($webfile, "r"); if ($fp !== false) fclose($fp); return($fp); } 

Если все изображения существуют на одном и том же удаленном сервере (или в той же сети), вы можете запустить веб-службу на этом сервере, которая проверит файловую систему для файла изображения и вернет значение bool, указывающее, что изображение существует или нет ,