PHP - 检查 CSV 文件是不是被锁定以供其他用户修改
Posted
技术标签:
【中文标题】PHP - 检查 CSV 文件是不是被锁定以供其他用户修改【英文标题】:PHP - Check if a CSV file is locked for modification by another userPHP - 检查 CSV 文件是否被锁定以供其他用户修改 【发布时间】:2020-12-21 15:32:07 【问题描述】:我使用 WinSCP 从远程 FTP 连续检索 CSV 文件
我创建了一个 php 脚本,它每 10 分钟扫描一次文件夹,以便使用 LOAD DATA INFILE
将这些 CSV 文件导入数据库
问题是我的PHP脚本会LOAD DATA INFILE
,即使文件仍在被WinSCP下载(有些文件是1到2gb,所以有时需要很长时间)
所以我想在 LOAD DATA INFILE
之前添加一个条件,以检查 CSV 文件是否被锁定以供其他用户修改(这是 Excel 在我尝试手动打开时告诉我的)
我尝试了几件事:
is_file($file_path)
boolean true
is_writable($file_path)
boolean true
is_readable($file_path)
boolean true
file_exists($file_path)
boolean true
当我使用 fopen 时,它会给我一个 false
返回
fopen($file_path, "r+")
boolean false
但是我有个例外,不知道在每个LOAD DATA INFILE
之前打开2gb文件会不会降低脚本的性能
Warning: fopen(***\booking.csv): failed to open stream: Resource temporarily unavailable in ***\load.php on line 62
【问题讨论】:
fopen 不会将文件读入内存,它不会显着降低脚本的性能。 【参考方案1】:我建议您将文件下载到另一个文件夹,仅在下载完成后将它们移动到受监控的文件夹。
或者你为什么不在下载完成后显式地触发你的 PHP 脚本?
有关类似问题,另请参阅How to detect that a file is being uploaded over FTP。
【讨论】:
以上是关于PHP - 检查 CSV 文件是不是被锁定以供其他用户修改的主要内容,如果未能解决你的问题,请参考以下文章