gpt4 book ai didi

PHP 在重命名之前检查文件是否打开

转载 作者:可可西里 更新时间:2023-10-31 22:12:26 24 4
gpt4 key购买 nike

我有清理脚本,可以将 XLS 文件从一个地方移动到另一个地方。对于这个文件移动过程,我使用了重命名功能。这个脚本工作正常。但是当 XLS 文件打开时,当我尝试移动该 xls 时,我收到错误消息,简单地说无法重命名 sample.xls。但我想添加这样的功能,在启动重命名功能之前检查 XLS 是否打开。

我相信这是函数调用 flock 但这仅适用于 TXT 文件。

如何在调用重命名函数之前检查 XLS 文件是否打开。

最佳答案

您可以尝试的一件简单的事情是使用 flock 获取文件的独占锁,如果失败,您将知道该文件正在被使用:

<?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 所以很难找到。

关于PHP 在重命名之前检查文件是否打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17588774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com