最近、「一言」のような一言出力プラットフォームを開発しています。データベースには MySQL も SQLite も使用していません。txt 形式のテキストでデータを保存するつもりだからです。
理由はとても簡単で、txt は書き込みや読み出しの速度が比較的速く、メモリ容量もあまり消費しません。また、この技術の難易度も高くなく、PHP によるテキストの読み取りだけが関係します。以下では、私の経験を共有します。
2つの方法
主に次の2つを紹介します。1つ目はネット上の情報を参考にしたもので、2つ目は自分で考えたものです。個人的には、やはり自分の方法のほうが少し良いと思います。
ソースコード取得版
コードは次のとおりです。
<?php
$data = file_get_contents($filename);
//按行分割数据
$arr = explode("\n", $data);
//随机读取100行
$rand = array_rand($arr,1); print_r($rand);
?>
詳しい説明はあまりしません。PHP の基礎が分かる方なら、見ればすぐに理解できるでしょう。
配列書き込み版
基本的な流れは、総行数を取得し、乱数を生成し、ランダムな行を取得して出力するというものです。コードは次のとおりです。
<?php
$f='1.txt'; //文件名
$a=file($f); //把文件的所有内容获取到数组里面
$n=count($a); //获得总行数
$rnd=rand(0,$n); //产生随机行号
$rnd_line=$a[$rnd]; //获得随机行
echo "$rnd / $n : $rnd_line"; //显示结果
?>
原理は上のコメントにすべて書かれているので、きっと理解できると思います。とにかく、かなり簡単だと私は思います。