[思路求教]文件检测,检测到存在新文件执行任务

muyu

需求是这样的:监测一个文件夹,一但文件夹出现新文件,则将文件进行拷贝,转码或者裁切,官网有个文件自动监测加载的,我想问如果文件很多,哪个实例还适用吗?还有如何确保该文件正在执行和过程中不背其他进程读取到?大佬们,有啥思路,

2858 6 0
6个回答

walkor 打赏

用那个文件监控组件就好。
http://doc.workerman.net/315203
用inotify版本的,文件很多也没问题。

操作文件前可以将文件重命名成其它文件或者move到一个临时目录来避免多个进程同时操作一个文件

  • 暂无评论
walkor 打赏

重命名是原子性的,有个进程执行后另外一个进程执行会失败,失败忽略就好了

  • 暂无评论
muyu

那如果文件有上W并且不断增加,服务会不会挂掉,或者说这个服务能支持多少的文件数量,并发不是很高,但是文件会累积!

  • 暂无评论
walkor 打赏

inotify可以支持上万文件的

  • muyu 2017-08-25

    好的 我知道了,我刚才在win下测试了无依赖版本的,发现稳定性不是很好,有时候更改了内容并不会触发监测,还有对于拷贝进来的没有检测到,我再试试inotify版

  • walkor 2017-08-25

    是的,无依赖版本性能比较差的

  • muyu 2017-08-25

    大佬,centos下inotify版只能监控现有文件吗?不能监控当前新创建的和粘贴复制的,以及程序长传吗?还有为啥有时候改了也不触发事件,但是是小概率事件!咋办,我主要想检测新文件进来的。。。

  • walkor 2017-08-25

    没遇到过你说的情况

  • muyu 2017-08-25

    那我是不是要每隔一秒把新文件加入监听列队,这样才能监听到新文件。。。

muyu

大佬,还是不行,centOs下启动服务有时候检测不到文件更新,而且在文件更新后重新加入监听列表报错:Warning: inotify_add_watch(): No such file or directory in /root/Desktop/muyu/Trank/FileMonitor/start.php on line 67;

这是为什么!

  • 暂无评论
walkor 打赏

No such file or directory 文件或者目录不存在的意思

  • muyu 2017-08-25

    我知道啊 ,但是文件存在啊!而且git的源码我就改了检测路径和注释了下面的posix_kill ;

  • walkor 2017-08-26

    估计你用了相对路径,php cli里相对路径和你理解的不太一样,涉及到文件的都写绝对路径就好了,用__DIR__来获得当前目录。

年代过于久远,无法发表回答
×
🔝