2016-06-01 10 views
3

Ich habe eine Software, die jede Minute ein JPEG in FTP Konto hochladen.asd.jpg ist keine gültige JPEG-Datei - Scandir PHP

In PHP mache ich ein wenig PHP-Code in Crontab, die letzte JPEG-Datei nehmen und Grafikverarbeitung durchführt. Das funktioniert gut.

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

Das Problem ist, dass manchmal der PHP-Code in crontab eine Datei nimmt, die noch über FTP geschrieben wird (so ist es unvollständig) und erzeugt diesen Fehler:

[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 

Wie kann ich hinzufügen Ein Scan nach Scandir, um die letzte vollständige Datei zu finden und nicht geschrieben zu werden?

+2

Gängige Praxis ist es, die Datei mit einem temporären Namen (zB 'asd hochladen .jpg.part') und dann umbenennen, wenn die Übertragung abgeschlossen ist. Sie würden dann nur nach Dateien suchen, die auf .jpg enden. – iainn

+0

Nein iainn Ich lese nicht. Teil Suffix, wenn die Datei geschrieben wird –

Antwort

3

Sie können nur die JPEG-Datei überprüfen, ob es gültig ist, bevor es die Verarbeitung (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

Danke! Ich versuche auch: '$ jpeg = imagecreatefromjpeg ('./asd/asd/'.$ last_files); \t \t \t \t \t \t if (! $ Jpeg) {// scheitern} else {// Bildverarbeitung} ' –

+0

Ja, das auch funktionieren könnte. Was wichtig ist, ist es zu verifizieren, bevor Sie es verarbeiten. –

Verwandte Themen