到目前为止,我有一个脚本,它在当前目录中查找指定的文件,如果不存在,它将上一个目录并再次搜索。
如果文件存在,则脚本可以正常工作,但是如果不存在则脚本会在脚本被取消超过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++;
}
}
}
答案 0 :(得分:0)
while($file_exists == 0)
将是无限的,因为您只在找到文件时将$file_exists
设置为1
假设文件不在那里,那么内部循环将只运行三次,但外部循环将无限运行(尽管没有任何可执行语句)
编辑:
您可以将条件合并为
while($file_exists == 0 && $search_count < $search_limit) {
//your entire code
}
答案 1 :(得分:0)
我认为你正在寻找这样的东西:
$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方法here的更多信息。