【发布时间】:2016-06-02 23:18:55
【问题描述】:
我有一个间歇性问题,错误包括无法打开流...
99.9% 的时间包含完美运行,但在一天的高峰时间,我注意到我的 php 错误日志中开始出现错误。
PHP 警告:include ('database.php') 无法打开流:没有这样的文件或目录
我只有一个包含此文件的文件,所以我完全了解它的工作原理,我们每天有几千个请求没有问题,但在这数千个请求中,我们似乎每天大约有 10 个只是失败并显示错误 PHP 警告:include ('database.php') failed to open stream: No such file or directory
它把我逼疯了! - 我已经进行了一些挖掘,以查看同时从 IIS 服务器请求的其他内容,我可以看到我正在调用一个单独的 php 文件,该文件与上述文件无关。它只是计算我的 php 错误日志中的行数,如果有问题,它会发送电子邮件....
我想知道是否由于某种原因存在某种文件进程限制,这意味着如果错误日志足够大,下面的代码正在对 PHP 执行某些操作以阻止它在其他地方完成文件进程,例如包含...
这段代码的基础是:-
function getLines($file)
{
$f = fopen($file, 'rb');
$lines = 0;
while (!feof($f)) {
$lines += substr_count(fread($f, 8192), "\n");
}
fclose($f);
return $lines;
}
$phpcount = getLines("c:/windows/temp/php-errors.log");
我想知道是否由于某种原因存在某种文件进程限制,这意味着如果错误日志太大,上述代码会出现问题,并且 PHP 会停止在其他地方完成文件进程,从而导致我的包含问题...
【问题讨论】:
-
在这些高峰时段您的硬盘使用量是多少
-
我刚刚比较了硬盘驱动器的利用率与发生错误时的情况。它的范围在 7% 和 17% 之间。其他地方也有一些高峰,但上周没有超过 40%
-
你能发布完整的错误信息吗?意思是,哪个文件触发了它?
-
有什么要检查的吗?执行包含的代码中的路径。即
include ('database.php')。确保路径是绝对文件路径?即__DIR__ .'/dtabase.php';。如果 is 是相对路径,则有时可能会更改“当前工作目录”。此外,出于同样的原因,该文件中使用的$file应该是绝对文件路径。即 imo,永远不要在 php 中使用相对文件路径。注意:您可以使用相对目录作为绝对文件路径的一部分。
标签: php