2014-12-02 9 views
1

나는 기능이이 funqction와 나는`당신이 그것을하지 존재하는 경우 내가 m getting image link and then chacking if file exists and Im 파일을 만들 이해 내 서버이미지 servre

  foreach($value[0] as $imagekey => $imageval) { 
       $imgname = $gancxadeba . '_' . $imagekey; 
       $saveaddr = dirname(dirname($_SERVER['PHP_SELF'])).'/www/classifieds_images/'; 
       $as = '.JPG'; 
       $originalname = $imgname . $as; 
       if(!file_exists($saveaddr.$originalname)) { 
        if (preg_match('/\.(jpg)$/', $imageval)) { 
         $getfile = imagecreatefromjpeg($imageval); 
        } elseif (preg_match('/\.(JPG)$/', $imageval)) { 
         $getfile = imagecreatefromjpeg($imageval); 
        } elseif (preg_match('/\.(png)$/', $imageval)) { 
         $getfile = imagecreatefrompng($imageval); 
        } else { 
         $getfile = imagecreatefromgif($imageval); 
        } 
        list($width, $height) = getimagesize($imageval); 
        $newWidth = 90; 
        $newHeight = 120; 
        $original = imagecreatetruecolor($width, $height); 
        imagecopyresampled($original, $getfile, 0, 0, 0, 0, $width, $height, $width, $height); 
        imagejpeg($original, "../www/classifieds_images/$originalname"); 
        echo 'განცხადება: ' . $gancxadeba . ' ორიგინალი სურათი: ' . $imgname . ' created!' . PHP_EOL; 

        $thumbname = $imgname . '_THUMB' . $as; 
        if (!file_exists($saveaddr . $thumbname)) { 
         $thumb = imagecreatetruecolor($newWidth, $newHeight); 
         imagecopyresampled($thumb, $getfile, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height); 
         imagejpeg($thumb, "../www/classifieds_images/$thumbname"); 
         echo 'განცხადება: ' . $gancxadeba . ' თამბი სურათი: ' . $imgname . ' created!' . PHP_EOL; 
        } 
       } 
       $image[$imagekey] = $imgname; 
      } 

에서 일부 이미지를 만들려고. 내 서버가 느려집니다. 2GB RAM을 사용 중입니다. 서버 속도를 높이려면 어떻게해야합니까?

먼저 file_put_content()를 시도한 다음 엄지 손가락 을 만들었지 만 gd 라이브러리뿐만 아니라 작동하지 않습니다. 이렇게 빨리이 기능을 수행하도록 도와주세요.

+0

속도가 느린 파일이 생성되지 않습니다. 그러나 이미지 라이브러리를 사용하여 가장 유명한 것을 시도해 보셨습니까? –

답변

2

GW2 기능을 사용하는 경우 파일 확장자를 신뢰하지 마십시오 (실제로 문제에 대한 대답이 아님). 누군가는 JPEG를 "trollpic.gif"라는 이름으로 저장하고 imagecreatefromgif가 오류를 발생시킬 수 있습니다.

사용 EXIF ​​데이터 대신 : 또한 http://php.net/manual/en/function.exif-imagetype.php

- 당신이 가능하다면 GD2에 대한 대안으로 imegemagick 시도해 볼 수도 있습니다 (이것은 일부 싼 호스팅 서비스에 아닙니다).

[편집]

$original = imagecreatetruecolor($width, $height); 
imagecopyresampled($original, $getfile, 0, 0, 0, 0, $width, $height, $width, $height); 
imagejpeg($original, "../www/classifieds_images/$originalname"); 

는 $의 GETFILE 원래 $ 모두 동일한 데이터를 유지 같은데.

$original = imagecreatetruecolor($width, $height); 
imagejpeg($getfile, "../www/classifieds_images/$originalname"); 

그것은 당신이 코드를 최적화 할 수있는 최선은 아니지만, 적어도 그것은 시작이다 : 확인이 작동합니다. 스크립트의 한 번 실행에서 처리 할 수있는 파일 수와 큐잉 수를 제한하는 것이 좋습니다. 많은 데이터를 처리하려고 할 때 가장 좋은 방법입니다. 반드시 이미지와 관련이있는 것은 아닙니다.

[EDIT2]

는 또한 - 설정되지 않은 변수들이 더 이상 필요하지 않을 때. 이미지에 대한 모든 작업을 파일에 저장했으면 리소스를 삭제하십시오. 그것은 이미지 파일을 제거하지 않습니다, 그냥 메모리에서 데이터를 드롭. http://php.net/manual/en/function.imagedestroy.php

+0

예. 그것은 지금보다 더 빠릅니다. 하지만 2GB RAM을 사용하고 있습니다. RAM 사용을 최소화하기 위해 무엇을 할 수 있습니까? – shalvasoft