好的,所以我有一个巨大的文本文件(大约2千兆字节),它有大约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;
但它甚至没有加载线。
此外,我无法直接打开此文件,它必须在我的桌面上。请不要建议我复制或移动到另一个目录。
我可以得到任何建议来帮助我相处或至少解释为什么它不起作用?
对不起,我的英语不太合适。
答案 0 :(得分:3)
$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
如果您真的想要实际显示该文件,从技术上讲,可以使用分页器显示文件的某个百分比,单击该分页器将在文件的不同部分之间切换。