現在有一個txt文件,裏面有100萬個標題,一行一個,我每次訪問時會傳回來一個pageid,pageid爲1的時候,就輸出文件裏面第一到一百個標題,pageid爲2時,就輸出第一百零一到兩百的標題,一次類推,PHP代碼呢,也很簡單:
🔒 隱藏內容:會員可查看
<?php
// 打開標題文件
$handle = fopen("huizong.txt", "r");
// 讀取文件內容,並移除UTF-8 BOM
$content = fread($handle, filesize("huizong.txt"));
$content = substr($content, 3); // 移除UTF-8 BOM
// 關閉文件句柄
fclose($handle);
// 將內容按行分割爲數組
$titles = explode("\n", $content);
// 去除每行首尾的空格
$titles = array_map('trim', $titles);
// 獲取文件總行數
$total = count($titles);
// 設置每頁顯示的標題數量和當前頁的 pageid
$per_page = 1000;
$page_id = isset($_GET['pageid']) ? intval($_GET['pageid']) : 1;
// 計算總頁數
$total_pages = ceil($total / $per_page);
// 計算偏移量
$offset = ($page_id - 1) * $per_page;
// 讀取指定偏移量和行數的標題
$titles = array_slice($titles, $offset, $per_page);
// 將標題、總行數、總頁數組成關聯數組
$data = array(
'total' => $total,
'total_pages' => $total_pages,
'titles' => $titles
);
// 輸出標題列表
header('Content-Type: application/json');
echo json_encode($data);上面這個是一次性全部把文件讀取,效率上會慢一點,但是80萬數據還是很快的,下面這個是我優化的,存放千萬行數據不是問題:
🔒 隱藏內容:會員可查看
<?php
$filename = "huizong.txt";
// 打開標題文件
$handle = fopen($filename, "r");
// 獲取文件總行數
$total = count(file($filename));
// 設置每頁顯示的標題數量和當前頁的 pageid
$per_page = 100;
$page_id = isset($_GET['pageid']) ? intval($_GET['pageid']) : 1;
// 計算總頁數
$total_pages = ceil($total / $per_page);
// 計算偏移量
$offset = ($page_id - 1) * $per_page;
// 讀取指定偏移量和行數的標題
$titles = array();
if ($handle) {
// 跳過偏移量之前的行
for ($i = 0; $i < $offset; ++$i) {
fgets($handle);
}
// 讀取指定行數的標題
for ($i = 0; $i < $per_page; ++$i) {
$title = fgets($handle);
if ($title !== false) {
$titles[] = trim($title);
} else {
break;
}
}
fclose($handle);
}
// 將標題、總行數、總頁數等信息組成關聯數組
$data = array(
'total' => $total,
'total_pages' => $total_pages,
'titles' => $titles
);
// 輸出標題列表及相關信息
header('Content-Type: application/json');
echo json_encode($data);