多个图像写入问题

时间:2015-04-21 06:47:25

标签: php fwrite

现在我厌倦了这个问题,一直试图修复它2-3天。

问题:

我正在下载某些图像,然后使用php脚本将它们写入磁盘。

图像的高分辨率可能在7000像素左右。数据正在正确下载。

当我将这些数据写入文件时,有时会有1个图像被写入,有时会出现2,3等等。

脚本没有显示任何错误,只是中断。 我无法访问服务器日志,也无法检查这些日志。

curl_get_contents 之后中断,意味着我写文件的位置,如果我评论该部分它正常工作。

以下是代码:

<?php

    ini_set ("display_errors", "1");
    error_reporting(E_ALL);
    ini_set('max_execution_time', 3000);

    include_once("../config.php");
    include_once("../utils.php");

    $DIR = "../wallpapers";
    $URL = "Website url";

    $info = array();
  $dom = new domDocument;
  @$dom->loadHTML(file_get_contents($URL));
  $dom->preserveWhiteSpace = false;
  $links = $dom->getElementsByTagName('img');
  $i = 0;
  foreach ($links as $tag){
    $iurl = $tag->getAttribute('src');
    $lastHyphenAt = strrpos($iurl, "-");
        $iurl = substr ($iurl, 0, $lastHyphenAt).".jpg";
    $info[$i]["url"] = $iurl;
    $info[$i]["name"] = basename($iurl);    
    $i++;
  }


    foreach($info as $item){
        $url = $item["url"];
        $name = $item["name"];

        if(!file_exists($DIR."/".$name)){
            echo "Downloading: ".$url."<br><br>";
            $data = curl_get_contents($url);            
            $file = fopen($DIR."/".$name,"w") or die('Cannot open file:  '.$my_file); 
            fwrite($file,$data);
            fclose($file);
        }else
            echo "Exists ".($DIR."/".$name)."<br><br>";
    }   
?>

1 个答案:

答案 0 :(得分:0)

您可以通过应用块功能来编写高分辨率图像,请检查以下代码: -

$chunk = 102400;
$filePointer = fopen($url, "rb");
if ($filePointer!=false){
        while (!feof($filePointer))
        {
            if($chunk<TOTALFILESIZE)
            {
                $fileData = fread($filePointer, 102400); //102400 is chunk size
                $myFile = $DIR."/".$_REQUEST['filename'].'.'.$_REQUEST['ext']; //store the file into temp. location
                chmod($myFile, 0777);
                $fp = fopen($myFile, 'a+');
                fwrite($fp, $fileData);
                fclose($fp);
            }       
        }
}