У меня есть программное обеспечение, которое загружает каждую минуту в формате JPEG в FTP учетная запись.
В PHP я делаю небольшой код PHP в crontab, который берет последний файл JPEG и выполняет обработку графики. Это отлично работает.
$all_files = scandir("./dir/dir",1);
$last_files = $all_files[0]; //take last jpeg
..etc..
Проблема в том, что иногда PHP-код в crontab берет файл, который все еще пишется по FTP (поэтому он неполный), и генерирует эту ошибку:
[01-Jun-2016 15:30:05 Europe/Rome] PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file in /home/asdasd/public_html/www.asdasdasdasd.com/asd/asd/cron.php on line 15
[01-Jun-2016 15:30:05 Europe/Rome] PHP Warning: imagecreatefromjpeg(): './dir/dir/153000.jpg' is not a valid JPEG file in /home/asdasd/public_html/www.asdasdasdasd.com/asd/asd/cron.php on line 15
[01-Jun-2016 15:30:05 Europe/Rome] PHP Warning: imagecopyresampled() expects parameter 2 to be resource, boolean given in /home/asdasd/public_html/www.asdasdasdasd.com/asd/asd/cron.php on line 17
Как добавить проверку для scandir, чтобы перехватить последний полный файл и не быть записанным?
Вы можете просто проверить файл JPEG, если он действителен, перед его обработкой (cron.php):
if(exif_imagetype($filepath) != IMAGETYPE_JPEG){
// Exit the script
exit;
}
// Your image processing code goes here...
Других решений пока нет …