Иногда моя функция PHP не работает хорошо

Я написал функцию php для копирования интернет-образа в локальную папку, иногда он работает хорошо, но иногда он просто генерирует неверный файл размером 1257B.

function copyImageToLocal($url, $id)
{
    $ext=strrchr($url, "."); 
    $filename = 'images/' . $id . $ext;

    ob_start(); 
    readfile($url); 
    $img = ob_get_contents(); 
    ob_end_clean();

    $fp=@fopen($filename, "a"); 
    fwrite($fp, $img); 
    fclose($fp); 
}

Примечание. Переданный $url действителен, иногда эта функция вначале дает сбой, но может быть успешной во второй или третий раз. Это действительно странно... Требуются ли для этого специальные настройки PHP?

Пожалуйста, помогите мне!


Я нашел реальную причину: URL тестового изображения не разрешен для доступа к программе, хотя его можно открыть в браузере. Я попробовал другой URL-адрес изображения, функция работает хорошо.

Так что, похоже, мне нужно найти способ обработать подобные случаи. Спасибо, парни!

1 ответ

Почему бы вам просто не открыть файл и не записать его на диск так:

file_put_contents($filename, fopen($url, 'r'));

Это даже сделает буферизацию для вас, поэтому вы не должны сталкиваться с проблемами памяти (так как вы сохраняете все изображение в памяти перед записью его в файл)

Другие вопросы по тегам