我有一个脚本加载一个庞大的目录列表,只是(在它的性质)需要永远加载。我现在在某些情况下经历了脚本超时,并且好奇我是否可以使用类似usleep的东西来防止脚本超时或者我是否会让情况变得更糟?
答案 0 :(得分:3)
您无法使用set_time_limit()设置超时限制?
如果将其设置为0,脚本将永远运行。
set_time_limit(0);
Usleep()将在给定时间内停止执行PHP脚本。在那段时间你的脚本将不会列出任何目录等。它只会冻结脚本,直到允许继续。
答案 1 :(得分: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);
脚本超时可能需要几分钟,但它没有做任何事情。
答案 2 :(得分:1)
您是否尝试使用RecursiveDirectoryIterator生成目录列表?
我曾经使用递归函数来生成目录列表,当我不得不处理大量文件进入更深层次时,这会无意中导致脚本超时。使用RecursiveDirectoryIterator解决了我的许多问题。
答案 3 :(得分:0)
您可以尝试set_time_limit
或查看是否可以优化代码:
ls -l > results.txt &
,以便列表在后台启动并将其复制到results.txt文件中。