在网站上炫耀一个巨大的文本文件

时间:2017-08-04 23:19:35

标签: javascript php html

好的,所以我有一个巨大的文本文件(大约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;

但它甚至没有加载线。

此外,我无法直接打开此文件,它必须在我的桌面上。请不要建议我复制或移动到另一个目录。

我可以得到任何建议来帮助我相处或至少解释为什么它不起作用?

对不起,我的英语不太合适。

1 个答案:

答案 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

如果您真的想要实际显示该文件,从技术上讲,可以使用分页器显示文件的某个百分比,单击该分页器将在文件的不同部分之间切换。

http://php.net/manual/en/function.fseek.php