我有一个目录,其中包含需要使用PHP批量处理的文件.文件通过FTP复制到服务器上.有些文件非常大,需要很长时间才能复制.如何在PHP中确定文件是否仍在传输(因此我可以跳过该文件的处理并在下一次批处理过程中处理它)?
可能是获取文件大小,等待片刻,并验证文件大小是否不同.这不是防水的,因为转移只是暂时停顿了一会儿......
在我的项目中,我有一个文件上传功能.文件通过FTP上传.我需要配置一个侦听器,它将检查新文件并仅在文件上载完成时调用脚本.因为如果我在检测到新文件后立即运行此脚本,它可以开始处理未完全上载的文件,这将导致错误.任何人都可以告诉LINUX这是否可行,我该怎么做?
文件正通过FTP推送到我的服务器.我在Drupal模块中使用PHP代码处理它们.O/S是Ubuntu,FTP服务器是vsftp.
我将定期检查新文件,使用SimpleXML处理它们并将它们移动到"完成"文件夹.如何避免处理部分上传的文件?
vsftp将lock_upload_files默认为yes.我想先尝试移动文件,期望在当前上传的文件中移动失败.这似乎不会发生,至少在命令行上.如果我开始上传大文件并移动,它只会在新位置继续增长.我猜目录条目没有锁定.
我应该尝试使用模式'a'或'r +'来查看它是否成功,然后再尝试加载到SimpleXML中,还是有更好的方法来执行此操作?我想我可以检测到SimpleXML加载失败,但......看起来很麻烦.
我无法控制发件人.他们不会上传和重命名.
谢谢
在此系统中,SFTP将用于将大型视频文件上载到服务器上的特定目录.我正在编写一个PHP脚本,用于将完全上传的文件复制到另一个目录.
我的问题是,判断文件是否完全上传的好方法是什么?我考虑过记录文件大小,睡眠脚本几秒钟,再次读取大小,并比较两个数字.但这似乎非常愚蠢.
我正在尝试使用lsof打开单个文件.有比这更快的方法吗?
$result = exec('lsof | grep filename | wc -l');
if($result > 0) {
//file is open
}
Run Code Online (Sandbox Code Playgroud)
我认为如果你知道文件名,他们必须是一种只测试一个文件的方法.我真正需要的只是真或假.