如何检测FTP上传的文件

时间:2014-11-29 07:13:22

标签: php file-upload ftp detect

我有一个客户端使用我无法控制的第三方脚本将XML文件上传到我服务器上的目录。上传后,文件将由php脚本处理。

我有一个cronjob,每小时检查一次dir以查看文件是否已上传,但如果上传发生在比如下午3:01,则​​不会在下午4:00之前处理。我的主人禁止每小时运行一次cronjob,而不是每小时一次。

有没有办法在文件到达时立即检测并提出建议?

3 个答案:

答案 0 :(得分:2)

简短的回答是肯定的,可以检测文件上传并立即执行操作。然而,这不是我所说的简单"解。您可能希望设置某种守护进程,以便run PHP continually(或完全使用其他语言来监视文件)。

简单的解决方案是降低你的cron间隔,然后只添加一些反堆叠机制(如锁文件),以确保你的脚本已经运行时不会执行。

答案 1 :(得分:1)

制作文件checker.sh,并在后台运行./checker.sh / dev / null 2>& 1& ,或在屏幕中运行

#!/bin/bash

COUNTER=0
while [  $COUNTER -lt 99999 ]; do

if [ -f "/path/to/your/file" ]; then
    #do action here ,run a  script a program etc #the file is there
fi

sleep 5
let COUNTER=COUNTER+1 

done

答案 2 :(得分:1)

如果您正在运行Linux,则可以查看inotify-tool包,该命令是inotify-tools包的一部分。这可以设置为等到在特定目录中创建文件,如下所示:

#!/bin/bash
while true
do
inotifywait -e create /home/myuser/upload_dir/ && php /home/myuser/scripts/process_file.php
done