记录一下PHP随机获取txt内容输出,最有效的写法
熊猫 管理员 已认证 9月前

原因是前段时间搞了套身份证随机获取源码,数据我看了下总共有34万+,这就对服务器CPU有很大的考验,刚开始一段时间还是好好的,后面随着访问量增加CPU直接就干到100%,这不行,毕竟论坛也在这个服务器,干爆了就悲催了。

原来的写法

<?php

 $txt=file('xxx.txt');

 $key=array_rand($txt);

 echo $txt[$key]; 

 ?>

更改后的

<?php
$file = 'xxx.txt'; // 文件路径

// 打开文件
$handle = fopen($file, 'r');
if ($handle) {
    $lineCount = 0;

    // 统计文件行数
    while (!feof($handle)) {
        fgets($handle);
        $lineCount++;
    }

    // 生成随机行号
    $randomLine = rand(0, $lineCount - 1);

    // 重新打开文件
    fseek($handle, 0);

    // 逐行读取文件,找到随机行号对应的内容
    $currentLine = 0;
    while (($line = fgets($handle)) !== false) {
        if ($currentLine === $randomLine) {
            echo $line;
            break;
        }
        $currentLine++;
    }

    // 关闭文件
    fclose($handle);
}
?>

 

丝滑且流畅,以上写法可以用于更多其它随机数据输出,什么随机壁纸,一言,等等。。减轻服务器压力

最新回复 (0)