我有一个脚本可以加载大量目录列表,并且(本质上)需要永远加载。我现在在某些情况下遇到脚本超时并且很好奇我是否可以使用类似 usleep 的东西来防止脚本超时,或者我是否会让情况变得更糟?
问问题
1714 次
4 回答
3
您不能使用set_time_limit()设置超时限制吗?
如果将其设置为 0,则脚本将永远运行。
set_time_limit(0);
Usleep()将在给定时间内停止 PHP 脚本的执行。在那个时候,您的脚本将不会列出任何目录等。它只会冻结脚本,直到它被允许继续。
于 2011-11-12T22:57:42.047 回答
1
PHP 可以尝试查找长时间不存在的文件/目录,所以如果您已经在使用类似的东西:
if ((is_dir($path) || file_exists($path)) && ($dh = opendir($path)))
{
while(($file = readdir($dh)) !== false)
{
.. file or dir is found, do stuff :)
}
closedir($dh);
}
我没有说一句话,但如果你只是使用:
$dh = opendir($path);
在脚本超时之前可能需要几分钟,但它不会执行任何操作。
于 2011-11-12T23:03:23.477 回答
1
您是否尝试过使用RecursiveDirectoryIterator生成目录列表?
我曾经使用递归函数来生成目录列表,当我不得不处理大量进入更深层次的文件时,它会无意中导致脚本超时。使用RecursiveDirectoryIterator解决了我的许多问题。
于 2011-11-12T23:41:44.293 回答
0
您可以尝试set_time_limit
或查看是否可以优化您的代码:
- 在您的系统上执行
ls -l > results.txt &
,以便列表在后台启动并将其复制到 results.txt 文件中。 - 使用子目录减少目录中的文件数量
于 2011-11-12T23:18:28.090 回答