【发布时间】:2016-09-30 22:29:55
【问题描述】:
我有一个软件,每分钟上传一个 jpeg 到 FTP 帐户。
在 PHP 中,我在 crontab 中编写了一些 PHP 代码,用于获取最后一个 JPEG 文件并执行图形处理。这工作正常。
$all_files = scandir("./dir/dir",1);
$last_files = $all_files[0]; //take last jpeg
..etc..
问题在于,有时 crontab 中的 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 的检查以捕获最后一个完整的文件但未被写入?
【问题讨论】:
-
标准做法是使用临时名称(例如
asd.jpg.part)上传文件,然后在传输完成后重命名。然后,您将只扫描以 .jpg 结尾的文件。 -
不,我在写入文件时不读取 .part 后缀