PHP在重命名之前检查文件是否为opend
发布时间:2020-12-13 17:45:18 所属栏目:PHP教程 来源:网络整理
导读:我有清理脚本,它将XLS文件从一个地方移动到另一个地方.对于这个文件移动过程,我使用了重命名功能.这个脚本运行正常.但是当XLS文件打开时,当我尝试移动那个xls时,我收到的错误只是说不能重命名sample.xls.但是我想添加一些功能,比如在启动重命名功能之前检查X
我有清理脚本,它将XLS文件从一个地方移动到另一个地方.对于这个文件移动过程,我使用了重命名功能.这个脚本运行正常.但是当XLS文件打开时,当我尝试移动那个xls时,我收到的错误只是说不能重命名sample.xls.但是我想添加一些功能,比如在启动重命名功能之前检查XLS是否已打开.
我相信这是函数调用flock但这仅适用于TXT文件. 在调用重命名函数之前,如何检查XLS文件. 解决方法
您可以尝试的一个简单的事情是使用
flock 获取文件上的Exclusive Lock,如果失败,您将知道正在使用该文件:
<?php $fp = fopen('c:/your_file.xlsx','r+'); if(!flock($fp,LOCK_EX)) { echo 'File is being used...'; exit(-1); } else { fclose($fp); // rename(...); } 另一种方法是检查在使用文件时通常会创建的excel锁定文件的存在: <?php $file = 'c:/testfile.xlsx'; $lock = 'c:/~$testfile.xlsx'; if (file_exists($lock)) { echo "Excel $file is locked."; } else { echo "Excel $file is free."; } 隐藏文件通常是带有前缀?$的名称,对于旧的excel文件,我相信2003年及更早版本的锁文件保存在临时文件夹中,其随机名称如~DF7B32A4D388B5854C.TMP,因此很难找到. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |