当前设置: 在同一个PHP文件中,我有一个PHP随机生成器函数和调用该函数的HTML - 一个包含被PHP函数调用的字符串的独立txt文档。
函数
<?php
function rand_line($fileName, $maxLineLength = 4096) {
$handle = @fopen($fileName, "strings.txt");
if ($handle) {
$random_line = null;
$line = null;
$count = 0;
while (($line = fgets($handle, $maxLineLength)) !== false) {
$count++;
if(rand() % $count == 0) {
$random_line = $line;
}
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
fclose($handle);
return null;
} else {
fclose($handle);
}
return $random_line;
}
}
?>
我在 HTML 中使用以下方式调用函数:
<?php echo rand_line("strings.txt");?>
<input type="button" value="Another String" onClick="window.location.reload()">
我想达到的目标是:提高性能,使整个过程不那么沉重:也许随机器过于复杂,可以使用 AJAX 调用等方法,但如果可能的话,保持字符串列表在 strings.txt 文件中,并与 PHP 脚本和 HTML 分离。
抱歉,如果我说得不对,请谅解... 我不是熟练的程序员。只是偶尔拼凑东西的人 :)
strings.txt
是否会发生变化?也就是说,它是一个永远不会改变的静态文件吗?还是该文件会不断更新新的字符串?此外,该文件中有多少行/字符串? - mferlystrings.txt
的内容很少更改,您应该考虑将其缓存并从那里进一步访问它们,无限期地。然后在文件添加新内容时允许清除缓存。为什么不只是将它们存储在标准数组中?PHP甚至JavaScript?特别是因为您现在只有约15行,并且不希望在未来超过约100行。每次调用时打开、遍历、随机化、关闭文件都不值得完成它所需的CPU。 - mferly