У меня есть сайт для фотографии, над которым я работаю в Laravel. Я использую пакет под названием Intervention/Image. В административной области сайтов это место, где администраторы могут создавать проекты, а затем загружать любое количество изображений в этот проект. Проблема заключается в том, что если образы значительны 4mb или больше, и есть 10 или более загружается в одно время я получаю эту ошибку:Laravel Intervention/Image Максимальное время выполнения 30 секунд превышено
Maximum execution time of 30 seconds exceeded
Я чувствую, как сценарий или библиотеки использует для много памяти, но я m не уверен, что не так. Я знаю, что могу поднять память и ограничить время, но я не чувствую, что мне нужно.
Я также искал изображения меньшего размера 100 кбайт или меньше, любое количество изображений более 20 убивает процесс и заполняет только первые 20 изображений. Я проверил сервер, и изображения правильно загружены в нужное место, но они не записываются в базу данных.
Я не уверен, что вызывает проблему при загрузке или запросах. Ниже приведен контроллер, который загружает изображения. В качестве побочного примечания сценарий также создает четыре размера файла, а также каждого изображения.
<?php
class UploadController extends BaseController {
private $sizes = array('large' => 2000, 'medium' => 1500, 'small' => 1000, 'thumb' => 300);
public function upload($id) {
$movedArray = array();
$errors = 0;
$images = Input::file('images');
foreach($images as $img) {
$oName = $img->getClientOriginalName();
$oMimeType = $img->getMimeType();
$oSize = $img->getSize();
$oExt = $img->getClientOriginalExtension();
$oTemp = $img->getRealPath();
// get original file name
$name = str_replace(array(' '), array('-'), $oName);
$orig = $oTemp;
$image_original = Image::make($img);
foreach($this -> sizes as $sizename => $size) {
$movedPath = public_path() .'/projects/';
$movedName = strtotime('now') .'-'. $id .'-'. $sizename .'-'. $name;
$moved = $image_original -> resize($size, null, function($constraint) {
$constraint -> aspectRatio();
});
$resizedMoved = $moved -> save($movedPath . $movedName);
$movedArray[$sizename] = $movedName;
}
// create the record in the database
$upload = new Upload;
$upload -> user_id = Auth::id();
$upload -> project_id = $id;
$upload -> thumbnail = $movedArray['thumb'];
$upload -> small = $movedArray['small'];
$upload -> medium = $movedArray['medium'];
$upload -> large = $movedArray['large'];
$upload -> file_type = $oMimeType;
$upload -> file_size = $oSize;
$upload -> file_extension = $oExt;
$upload -> save();
}
if($errors > 0) {
Session::put('alert-class', 'success');
Session::put('msg', 'All files have been uploaded');
} else {
Session::put('alert-class', 'danger');
Session::put('msg', 'Uh oh, something went wrong please try again');
}
return Redirect::back();
}
}
Является ли это единственной возможностью повернуть память и установить ограничение по времени? Если это так, я чувствую, что это плохо программирование, потому что я уже установить это:
ini_set("memory_limit","1000M");
set_time_limit(1000);
И я все еще получаю ту же ошибку, что любая помощь будет принята с благодарностью! Благодаря
@ DamianMąsior Jesus, возможно, что это такое, я посмотрел на max_file_uploads и его набор на 20 и max_input_vars 2500. Если вы поместите это как ответ, я буду отмечать его правильно! –