Иногда моя функция 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'));
Это даже сделает буферизацию для вас, поэтому вы не должны сталкиваться с проблемами памяти (так как вы сохраняете все изображение в памяти перед записью его в файл)