我有一个文件,里面有 ~ 10.000 行。我希望每次用户访问我的网站时,它都会在其中随机选择 10 行。
我目前使用的代码:
$filelog = 'items.txt';
$random_lines = (file_exists($filelog))? file($filelog) : array();
$random_count = count($random_lines);
$random_file_html = '';
if ($random_count > 10)
{
$random_file_html = '<div><ul>';
for ($i = 0; $i < 10; $i++)
{
$random_number = rand(0, $random_count - 1); // Duplicate are accepted
$random_file_html .= '<li>'.$random_lines[$random_number]."</li>\r\n";
}
$random_file_html .= '</ul>
</div>';
}
当我有 < 1000 行时,一切正常。但是现在,有 1000 行。它使我的网站显着变慢。
我正在考虑其他方法,例如:
将文件分成50个文件,随机选择它们,然后在所选文件中随机选择10行。
-- 或者 --
我知道总行数(项目)。随机生成10个数字,然后读取文件使用
$file = new SplFileObject('items.txt');
$file->seek($ranđom_number);
echo $file->current();
(我的服务器不支持任何类型的 SQL)
也许你有其他最适合我的方法。解决我的问题的最佳方法是什么?非常感谢!