2013-02-20 3 views
0

우리의 응용 프로그램에서 사용자는 1024 x 768 크기 (약 150KB)의 이미지를 업로드 할 수 있습니다.
사용자가 일 다음과 같은 이미지를 업로드 일 : 임시 디렉토리
2)에 업로드Image Uploading Management in PHP

1) 이미지 4 개 가지 크기로 이미지를 자릅니다.
3) 원본 이미지와 자른 이미지를 아마존 s3 서버에 업로드하십시오.

위의 프로세스는 사용자에게 시간이 걸리는 것으로 나타났습니다.

xdebug로 프로파일 링 한 후 아마존 s3에서 이미지를 업로드하면 90 %의 시간이 소모 된 것으로 보입니다. 이 나는 ​​아마존 S3 버킷에 이미지를 저장하는 방법을 아래에 주어진 사용하고

public function saveInBucket($sourceLoc,$bucketName = '', $destinationLoc = '') {   
    if($bucketName <> '' && $destinationLoc <> '' && $sourceLoc <> '') { 
     $s3 = new AmazonS3(); 
     $response = $s3->create_object($bucketName.'.xyz.com',$destinationLoc, array(
              'contentType' => 'application/force-download', 
              'acl' => AmazonS3::ACL_PUBLIC, 
              'fileUpload' => $sourceLoc 
              ) 
             ); 

     if ((int) $response->isOK()) { 
      return TRUE; 
     } 

     $this->ErrorMessage = 'File upload operation failed,Please try again later'; 
     return FALSE; 
    } 
    return FALSE; 
}  
나는 또한 직접 이미지를 업로드 생각

아마존 S3하지만 난 할 수 없어 나는 또한 4 개 개의 다른 크기
에 작물 이미지가 있기 때문에 그 어떻게하면 이미지 관리 프로세스의 속도를 높이거나 향상시킬 수 있습니까?

답변

1

이전에 이런 일이있었습니다. 할 수있는 일은 다음과 같습니다.

이미지의 크기를 조정할 때 문자열로 변환해야합니다. WideImage 클래스를 사용하고있었습니다.

예 :

$image = WideImage::load($_FILES["file"]['tmp_name']); 
    $resized = $image->resize(1024); 
    $data = $resized->asString('jpg'); 

그리고 당신은 아마존에 업로드 할 때 다음, 당신은 PARAM 대신 '파일 업로드'의 '몸'을 사용해야합니다.

예 :

$response = $s3->create_object($bucketName.'.xyz.com',$destinationLoc, array(
             'contentType' => 'application/force-download', 
             'acl' => AmazonS3::ACL_PUBLIC, 
             'body' => $data 
             ) 
            ); 

나는이 도움이되기를 바랍니다.