gpt4 book ai didi

PHP 无法在 fclose 后取消链接文件

转载 作者:可可西里 更新时间:2023-11-01 12:36:03 26 4
gpt4 key购买 nike

脚本完成后,我可以删除该文件,但在它运行时我无法触摸它,即使在 fclose() 之后也是如此。这是我尝试使用的代码:

    $Files = glob("$_SERVER[DOCUMENT_ROOT]/files/*.csv");

$File = fopen($Files[0], "r");

//while (($Data = fgetcsv($File)) !== false) {...

$i = 0;
while (is_resource($File)) {
$i && sleep(1);
echo "Closing handle.\n";
fclose($File);
if (++$i > 5)
die("Could not close handle.");
}

foreach ($Files as $File) {
$i = 0;
while (file_exists($File)) {
$i && sleep(1);
echo "Deleting file.\n";
@unlink($File);
echo 'www-data@debian:~$ ', $Command = "rm -f '$File' 2>&1", "\n", shell_exec($Command);
if (++$i > 5)
die("Could not delete the file.");
}
}

如您所见,我正在尝试通过 unlink() 删除它并使用 shell 命令,但两者都不起作用,都给我这个错误:

rm: cannot remove 'invincible-file.csv': Text file busy

我也意识到这个脚本可能有点矫枉过正,但这纯粹是因为我无法让它以任何方式工作,一些额外的代码只是为了输出目的来尝试调试正在发生的事情。

最佳答案

我以前遇到过这个问题,并且能够通过在关闭文件后和取消链接之前强制进行垃圾回收来解决:

gc_collect_cycles();

到目前为止,这不是最好的解决方案,但它确实解决了我删除之前打开和关闭的文件的问题。

关于PHP 无法在 fclose 后取消链接文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41251652/

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