最近、「一言」のような一言出力プラットフォームを開発しています。データベースには 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"; //显示结果
?>

原理は上のコメントにすべて書かれているので、きっと理解できると思います。とにかく、かなり簡単だと私は思います。