到目前为止,我有一个脚本,它在当前目录中查找指定的文件,如果它不存在,它将进入一个目录并再次搜索。
如果文件存在,则脚本工作正常,但是如果不存在,则脚本会一直持续到脚本因超过 30 秒而被取消,即使使用计数器来限制执行
。$path = 'log.log';
$file_exists = 0;
$search_count = 0;
$search_limit = 3;
while($file_exists == 0) {
while($search_count < $search_limit) {
if(file_exists($path)) {
$file_exists = 1;
$search_count = $search_limit + 1;
$resource = fopen($path, "r");
while (!feof($resource)) {
echo fgetss($resource);
}
fclose($resource);
} else {
$path = '../'.$path;
$search_count++;
}
}
}
我想
你正在寻找这样的东西:
$path = 'log.log';
$file_exists = false;
$search_count = 0;
$search_limit = 3;
while (!$file_exists and $search_count < $search_limit) {
if(file_exists($path)) {
$file_exists = true;
$resource = fopen($path, "r");
while (!feof($resource)) {
echo fgetss($resource);
}
fclose($resource);
} else {
$path = '../'.$path;
$search_count++;
}
}
编辑:如果你只是在log.log
文件的内容之后,你可以像这样使用file_get_contents($path)
:
...
if(file_exists($path)) {
$file_exists = true;
$contents = file_get_contents($path);
echo $contents;
}
...
在此处查找有关file_get_contents方法的详细信息。
while($file_exists == 0)
将是无限的,因为您只将$file_exists
设置为在找到文件时1
假设文件不存在,那么内部循环将只运行三次,但外部循环将无限运行(尽管没有任何可执行语句)
编辑:
您可以将条件合并为
while($file_exists == 0 && $search_count < $search_limit) {
//your entire code
}