PHP 是单线程的,这意味着它在继续之前一次执行一条指令。换句话说,PHP 在继续执行下一条语句之前自然会等待函数完成执行。
我尝试在我的机器上执行您的代码,它正确地等待并等待直到我修改了文件,然后才完成功能并显示消息。
我什至看不到您的代码中可能失败的任何内容。由于创建 of$lfilemod
的方式与循环中的检查相同,因此即使文件存在问题,该while
循环的条件也会返回并执行 (将在两个错误上都返回,因此条件将读取,即显然)。TRUE
filemtime
FALSE
(FALSE == FALSE
TRUE
您的 PHP 脚本是否在运行该循环之前完全修改了文件?如果是,则返回的初始值filemtime
可能是脚本最初启动时的修改时间。当您clearstatcache
在循环中运行时,您将获得由脚本前面的更改引起的新修改时间。
我的建议:
clearstatcache
在设置值之前尝试运行,$lfilemod
以便您知道该值是干净的,并且您正在将苹果与苹果与循环中正在检查的内容进行比较。
确保文件确实没有被修改。尝试在代码的开头和结尾放置几行调试行,打印出文件的最后修改时间,然后自己比较两者以查看 PHP 是否报告修改时间发生了变化。
这是不言而喻的,但是您应该确保 PHP 被配置为在开发过程中显示所有错误,以便您立即了解何时以及如何出现问题。确保该display_errors
设置已On
在您的php.ini
文件中打开(ini_set()
如果您无法修改文件本身,则使用该设置),并且您error_reporting()
的设置E_ALL | E_STRICT
为 PHP <= 5.3 或E_ALL
PHP 5.4(E_STRICT
是E_ALL
该版本的一部分)。更好的方法是将错误报告设置为-1
有效地打开所有错误报告,无论 PHP 版本如何。
尝试使用这些修改再次运行您的代码。如果您看到该文件确实正在被修改,那么您就知道您的代码有效。如果文件没有被修改,您至少应该有一个可以查找的错误,或者在这里询问我们。