有时我的PHP函数不能正常工作

时间:2013-07-24 03:12:28

标签: php ob-get-contents

我写了一个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设置吗?

请帮助我!


我找到了真正的原因:虽然可以在浏览器中打开,但测试图像网址不允许进行程序访问。 我尝试了其他一些图片网址,功能很好。

所以,似乎我需要找到一种方法来处理这种情况。 谢谢你们!

1 个答案:

答案 0 :(得分:1)

为什么不打开文件并将其写入磁盘,如下所示:

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

这甚至会为你做缓冲,所以你不应该遇到内存问题(因为你在将整个图像写入文件之前将其存储在内存中)