好的,所以我有一个巨大的文本文件(大约 2 GB),它有大约 20 亿行。 到目前为止我所尝试的是
$myfile = fopen("C:\Users\server\Desktop\primes.txt", "r") or die("Unable to
open file!");
while(!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
fclose($myfile);
但有一个问题,没有完成所有的行,并在第一季度的某个地方挂断了——而且它也需要很长时间才能加载。 我试过的第二件事是这个
$path="C:/Users/server/Desktop/Server files/application.windows64/";
$file="primes.txt";
//read file contents
$content="
<code>
<pre>".file_get_contents("$path/$file")."</pre>
</code>";
//display
echo $content;
但它甚至没有加载线。
另外,我不能直接打开这个文件,它必须在我的桌面上。请不要建议我将其复制或移动到另一个目录。
我能得到任何帮助我相处的建议,或者至少能解释为什么它不起作用吗?
对不起,我的英语不太好。
最佳答案
$attachment_location = $_SERVER["DOCUMENT_ROOT"] . $file;
if (file_exists($attachment_location)) {
header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
header("Cache-Control: public");
header("Content-Type: text/plain");
header("Content-Length:" . filesize($attachment_location));
header("Content-Disposition: attachment; filename=file.txt");
readfile($attachment_location);
die();
} else {
die("Error: File not found.");
}
它不起作用,因为它是一个 2 gig 文件,您正试图将它输出到屏幕上,而不是允许用户下载它或在他们的个人计算机上打开它。这应该是传递此文件的唯一方式。 2 gigs 输出到浏览器窗口可能会使客户端和服务器之一或两者崩溃。
http://php.net/manual/en/function.readfile.php
如果您真的想实际显示该文件,从技术上讲,可以使用分页器显示文件的特定百分比,单击该分页器将在文件的不同部分之间切换。
关于javascript - 在网站上炫耀一个巨大的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45516719/