2016-06-01 3 views
3

У меня есть программное обеспечение, загружающее каждую минуту jpeg в FTP аккаунт.asd.jpg не является допустимым файлом JPEG - Scandir PHP

В PHP я создаю небольшой PHP-код в crontab, который принимает последний файл JPEG и выполняет графическую обработку. Эта работа прекрасна.

$all_files = scandir("./dir/dir",1); 
$last_files = $all_files[0]; //take last jpeg 
..etc.. 

Проблема заключается в том, что иногда PHP код в кронтаб принимает файл, который до сих пор пишется через 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, чтобы поймать последний полный файл и не писать?

+2

Стандартная практика, чтобы загрузить файл с временным именем (например, 'ASD .jpg.part'), а затем переименуйте, когда передача завершена. Тогда вы только сканируете файлы, заканчивающиеся на .jpg. – iainn

+0

Нет iainn Я не читаю суффикс .part, когда файл написан –

ответ

3

Вы можете просто проверить файл JPEG, если он действует до его обработки (cron.php):

if(exif_imagetype($filepath) != IMAGETYPE_JPEG){ 
    // Exit the script 
    exit; 
} 

// Your image processing code goes here... 

http://php.net/manual/en/function.exif-imagetype.php

+0

Спасибо! Я также попробую: '$ jpeg = imagecreatefromjpeg ('./ asd/asd /'.$ last_files); \t \t \t \t \t \t если (! $ JPEG) {// обязательно} еще {// обработка изображений} ' –

+0

Да, это может работать тоже. Важно проверить его перед его обработкой. –

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