也许最好从描述场景开始。
我们有一个带有 ffmpeg 的 Debian 服务器,用于将各种视频文件转换为 FLV。这些文件由许多不同的人通过 FTP 提供,并保存在“上传”文件夹中。
我需要编写一个 PHP 脚本来遍历上传文件夹中的所有文件,选择完整的文件(即当前未上传或没有任何上传错误),然后使用 ffmpeg 将它们转换为 FLV。
我可以进行转换和其他所有操作,但是如何确定文件是否完整并完全上传?
非常感谢!
也许最好从描述场景开始。
我们有一个带有 ffmpeg 的 Debian 服务器,用于将各种视频文件转换为 FLV。这些文件由许多不同的人通过 FTP 提供,并保存在“上传”文件夹中。
我需要编写一个 PHP 脚本来遍历上传文件夹中的所有文件,选择完整的文件(即当前未上传或没有任何上传错误),然后使用 ffmpeg 将它们转换为 FLV。
我可以进行转换和其他所有操作,但是如何确定文件是否完整并完全上传?
非常感谢!
还有另一种方法可以解决这个问题,我们多年来一直这样做。
大多数 ftp 服务器(proftpd 确实如此)会输出一个日志,告诉您文件上传何时成功完成。您可以将此日志记录设置为转到名为 pipe / fifo 的 unix,然后让守护程序脚本读取此内容以确定要处理的文件。这很好用,并且仅在文件完全成功上传后才处理文件。
Afaik 你不能只弄清楚文件是否仍在上传。您可以每分钟运行一次 cronjob 获取文件大小并将它们存储在数据库或文件中。然后,如果您第二次运行 cronjob 并且文件大小相同:转换它们,如果不是.. 再等一分钟,然后再试一次。
我不相信有一个文件大小存储在一个文件中,该文件包含上传完成后应该达到的大小。