gpt4 book ai didi

php - 在将输出重定向到文本文件时使用 exec 似乎锁定了该文件

转载 作者:搜寻专家 更新时间:2023-10-31 21:44:04 26 4
gpt4 key购买 nike

在 WAMP 配置中,我使用 exec 执行 shell 命令,并使用 >> log.txt 重定向输出。脚本中多次调用突击队。第一次创建文件,第一个输出写在上面,但是好像文件流没有关闭(我不能删除文件,Windows告诉我文件被别人打开了),因此脚本会尝试继续加载但不执行任何其他操作,并且在我为此脚本设置的 5 分钟限制后仍在尝试。

我做错了什么吗?如果是,为什么?否则问题出在哪里?

编辑: 我已经通过注释代码行确认它是我的问题的根源。此外,尽管我中断了脚本,但文件仍处于锁定状态,无法进行任何更改(编辑/移动/删除)。

编辑 2: 使用 pclose(popen("start/B ". $cmd, "r")) 代替,如 this comment 中的建议似乎没有带来任何东西,不管我是否使用 >> log.txt

编辑 3:在意外强制重启服务器后,问题不再存在。

我和一些同事谈过他们的应用程序遇到了类似的问题,他们说重启他们的服务器总能“解决”问题。但如果问题迟早会再次出现,我不会称之为解决方案。所以看来“静默更新”的场景是比较有可能的。

与此同时,服务器将迁移到具有较新操作系统 (Windows 2008 Server) 的机器上。我会等着看问题是否再次出现,但如果可能的话,我想采取措施,这样我以后就不必再处理了。

最佳答案

你为什么不 exec($cmd, $output, $result) ?这将返回 $output 变量中的输出。然后你可以做一个 file_put_contents($file, implode("\r\n", $output), FILE_APPEND)

这将允许您以纯 PHP 方式将命令的输出附加到日志文件中

关于php - 在将输出重定向到文本文件时使用 exec 似乎锁定了该文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6534436/

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