Я сделал консольную команду Symfony, которая использует pngquant
для обработки и сжатия длинного списка изображений. Изображения считываются из файла CSV.
Пакет работает нормально до конца в локальной среде , но в рабочей среде он работает около 5 минут и затем он начинает возвращать пустой результат из команды shell_exec
. Я даже сделал систему повторных попыток, но она всегда возвращает пустой результат:
// escapeshellarg() makes this safe to use with any path
// errors are redirected to standard output
$command = sprintf(
'%s --quality %d-%d --output %s --force %s 2>&1',
$this->pngquantBinary,
$minQuality,
$maxQuality,
escapeshellarg($tempPath),
$path
);
// tries a few times
$data = null;
$attempt = 0;
do {
// command result
$data = shell_exec($command);
// error
if (null !== $data) {
$this->logger->warning('An error occurred while compressing the image with pngquant', [
'command' => $command,
'output' => $data,
'cpu' => sys_getloadavg(),
'attempt' => $attempt + 1,
'sleep' => self::SLEEP_BETWEEN_ATTEMPTS,
]);
sleep(self::SLEEP_BETWEEN_ATTEMPTS);
}
++$attempt;
} while ($attempt < self::MAX_NUMBER_OF_ATTEMPTS && null !== $data);
// verifies that the command has finished successfully
if (null !== $data) {
throw new \Exception(sprintf('There was an error compressing the file with command "%s": %s.', $command, $data));
}
Проблема в том, что та же команда, выполняемая в другой оболочке в той же среде, работает нормально ! Я имею в виду, что когда я регистрирую ошибку, если я помещаю точно такую же команду в другой экземпляр на том же сервере, она работает нормально.
Даже из журналов Symfony я не могу прочитать ни одной ошибки, где следует Я ищу более подробную ошибку?
Что может быть причиной этого? Память и процессор в порядке во время исполнения!