getimagesize() failed to open stream: Too many open files

207
08 февраля 2018, 18:22

Запускаю скрипт на локальной машине, он открывает изображение, делает ресайз и сохраняет.

Код открытия:

$imageInfo = getimagesize ($filePath);
$this->_width = $imageInfo[0];
$this->_height = $imageInfo[1];
$type = Helper::mime2ext ($imageInfo['mime']);
$this->_extension = $type;
switch ($type) {
    case 'gif' :
       $this->_image = imagecreatefromgif ($filePath);
       break;
       case 'jpg' :
          $this->_image = imagecreatefromjpeg ($filePath);
          break;
       case 'png' :
          $this->_image = imagecreatefrompng ($filePath);
          break;
        }
$this->_size = filesize ($filePath);
unset($imageInfo);
return true;

Код сохранения:

if (!imagejpeg ($this->_image, $path, $quality))
        return false;
imagedestroy($this->_image);
unset($this->_image);
return true;

Не могу понять откуда эта ошибка
Warning! getimagesize("path/to/image.jpg") failed to open stream: Too many open files

UPD. Скрипт выполняется циклом 250-290 раз и вылетает эта ошибка, операционная система MacOS

Answer 1

Надо увеличить возможное число открытых файлов. Если в MacOS это нельзя сделать, то придется отказаться от getimagesize и посчитать вручную. Вот есть либа - https://github.com/marc1706/fast-image-size

READ ALSO
php array foreach, древо массива

php array foreach, древо массива

Здравствуйте

182
Сравнение в PHP , sql;

Сравнение в PHP , sql;

Не понимаю прикола PHP но всё же , сравниваю правильный пароль , и который ввел пользователь , и тут всегда даёт false , не понимаю в чем проблема...

183
PHP какой файл отвечает за вывод меню

PHP какой файл отвечает за вывод меню

Здравствуйте! Помогите определить, какой из указанных в данном коде файлов может отвечать за вывод верхнего меню на html-странице

192