php - PHP - 检查 CSV 文件是否被锁定以供其他用户修改
问题描述
我使用 WinSCP 从远程 FTP 连续检索 CSV 文件
我创建了一个 PHP 脚本,它每 10 分钟扫描一次文件夹,以便使用LOAD DATA INFILE
问题是LOAD DATA INFILE
即使文件仍在由 WinSCP 下载,我的 PHP 脚本也会执行(有些文件是 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
但是我有一个例外,我不知道在每个之前打开 2gb 文件是否LOAD DATA INFILE
会降低脚本的性能
Warning: fopen(***\booking.csv): failed to open stream: Resource temporarily unavailable in ***\load.php on line 62
解决方案
我建议您将文件下载到另一个文件夹,仅在下载完成后将它们移动到受监控的文件夹。
或者,一旦下载完成,您为什么不显式地触发您的 PHP 脚本?
对于类似的问题,另请参阅如何检测文件正在通过 FTP 上传。
推荐阅读
- jquery - 基于 DropDownList MVC (MVC3..) 动态创建 DIV
- c# - 满足特定条件时连续禁用特定按钮
- wordpress - Wordpress - 在链接到共享相同子页面名称的子页面的父页面特定菜单项上动态获取父页面名称?
- jquery - jQuery链中动态命名的函数调用
- android - 使用 TransitionSet 与 android 导航库进行进入/退出转换
- javascript - Discord Bot 读取单行然后删除它们
- android - 谷歌播放订单
- javascript - 向函数 jquery 添加第三个值
- android - 具有多个 ListView 的嵌套 ScrollView 不滚动
- javascript - 将png文件存储在javascript变量中?