我试图在php中编写cronjob来搜索服务器上新上传的文件。每天晚上服务器都会添加一个csv文件,该文件必须被拉到我的本地服务器,并插入到我的数据库中。我可以读取csv文件,将其插入数据库,以及在我这端执行其他操作,但不知道如何每天晚上扫描目录以查找新文件。有人对这个有什么建议吗?
算法:
- 扫描目录,按日期排序文件,记录最近文件的日期
- 在随后的扫描中,将最新文件的日期与记录的日期 进行比较
- 如果日期较新,表示上传了新文件。
虽然从技术上讲,您可以使用纯PHP完成此操作,但我将使用find
命令:
$files = explode("'0",`find /path/to/dir -mtime -1 -iname '*.csv' -print0`);
使用scandir
,创建一个包含所有文件的数组$allFiles
。创建另一个数组$oldFiles
,其中包含该目录中的所有现有文件。之后,执行array_diff($allFiles, oldFiles)
将生成一个仅包含新文件的数组。