内部に〜10.000行のファイルがあります。ユーザーが自分の Web サイトにアクセスするたびに、その中からランダムに 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 もサポートしていません)
たぶん、私に最適な他の方法があります。私の問題に最適な方法は何ですか? どうもありがとうございました!