2014-01-21 7 views
0

У меня проблема с большими файлами, использующими Laravel на Appfog, загружаясь в Amazon S3.Ожидание загрузки файла перед отправкой на S3?

Он отлично работает для файлов размером от 1 до 1,5 МБ. Но все больше, и это терпит неудачу.

Похоже на то, что сервер явно запустил код загрузки S3, прежде чем файл будет загружен и в памяти на сервере.

Поскольку сообщение об ошибке необработанного исключения возвращаемого S3 Laravel Bundle ...

Высказывания ....

S3::inputFile(): Unable to open input file: 

Когда я загрузить/запустить эту функцию локально через WAMP с тем же файл работает нормально. И делает его S3 отлично.

Его единственный, когда файл проходит через провод через приложение appfog, которое он ломает. Поскольку загрузка локально занимает 20 мс, а загрузка по кабелю занимает около 4 секунд.

Это показывает мне, что он явно запустил код до того, как файл прибыл или что-то в этом направлении.

И снова, он отлично работает с моим приложением, когда файлы маленькие. Только когда они немного больше, он ломается.

Любые идеи ???

public function action_uploadfile(){ 
    $input = Input::all(); 

    if(!empty($input['theDoc']['name'])){ 

     $file = Input::file('theDoc'); 
     $s = Setting::shortcode(); 
     $id = $input['theID']."-".$input['leadID']; 
     $path_parts = pathinfo($file['name']); 
     $ext = $path_parts['extension']; 

      if(!empty($input['theName'])){ 
       $filename = $input['theName'].".".$ext; 
      } else { 
       $filename = $file['name']; 
      } 

      if((!empty($file))&&(S3::inputFile($file['tmp_name'], false))){ 

       if(S3::putObject($input2, 'myAMAZONBucket', $s."/".$id."/".$filename, S3::ACL_PUBLIC_READ)){ 
       $file2 = Doc::where('uri','=', $s."/".$id."/".$filename)->get(); 
       if($file2){ 
        // duplicate file/document error goes here 
       } else { 
        $f = New Doc; 
        $f->lead_id = $input['leadID']; 
        $f->sale_id = $input['theID']; 
        $f->user_id = Auth::user()->id; 
        $f->notes = $input['theNotes']; 
        $f->filetype = $ext; 
        $f->filesize = $file['size']; 
        $f->filename = $filename; 
        $f->uri = $s."/".$id."/".$filename; 
        if($f->save()){ 
        return Redirect::back(); 
        }; 
       } 
      } else { 
       //Cannot read file error 
      } 

      } else { 
       //Failed upload error 
      } 

     } else { 
      //No file selected error 
     } 
} 

ответ

0

Попробуйте использовать некоторые ini_set() 's, чтобы играть с такими вещами как max_execution_time и set_time_limit, чтобы увидеть, если один из них установлен слишком низко.

+0

Его интересное, что вы говорите, что .... потому что мой max_execution_time на моей локальной машине составляет 30 секунд, а на сервере, у которого есть проблема, 300 секунд ...... Я не понимаю? – KyleK

Смежные вопросы