1

我正在为 Minecraft 服务器制作控制台查看器,但是当我进入只需要在浏览器中显示文本的阶段时,它不会让我出现此错误:

致命错误:第 17 行 C:\xampp\htdocs\testingfile.php 中允许的内存大小为 134217728 字节已用尽(尝试分配 36 字节)

我猜它不会显示因为文件太大?该文件约为 4.5MB。我想显示文件中最近的 10 行。

这是我的代码:

    <?php

// define some variables
$local_file = 'C:\Users\Oscar\Desktop\worked.txt';
$server_file = 'NN7776801/server.log';
$ftp_server="Lol.Im.Not.Thick";
$ftp_user_name="Jesus";
$ftp_user_pass="ReallyLongPassWordThatYouWontGuessLolGoodLuckMateGuessingThisPass";

$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// try to download $server_file and save to $local_file
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
    $contents = file($local_file); 
    $string = implode($contents); 
    echo $string;


    for ($i = 0; $i < 6; $i++) {
    echo $local_file[$i] . "\n";
}
}
else {
    echo "There was a problem\n";
}
// close the connection
ftp_close($conn_id);

?>
4

2 回答 2

0

在变量中增加以下内容,php.ini以便您的页面执行不会停止:

max_input_time
memory_limit
max_execution_time

要获得 10 行,您可以尝试以下操作:

$filearray = file("filename");
$lastfifteenlines = array_slice($filearray,-15);

或者使用一个函数:

function read_last_lines($fp, $num)
{
    $idx   = 0;

    $lines = array();
    while(($line = fgets($fp)))
    {
        $lines[$idx] = $line;
        $idx = ($idx + 1) % $num;
    }

    $p1 = array_slice($lines,    $idx);
    $p2 = array_slice($lines, 0, $idx);
    $ordered_lines = array_merge($p1, $p2);

    return $ordered_lines;
}

// Open the file and read the last 15 lines
$fp    = fopen('C:\Users\Oscar\Desktop\worked.txt';', 'r');
$lines = read_last_lines($fp, 10);
fclose($fp);

// Output array 
 echo '<pre>'.print_r($my_array).'</pre>';

要打印内容,请添加:

$withlines= implode ("<br>\n",$my_array); //Change $my_array with the name you used!
echo $withlines;
于 2013-04-24T18:37:25.730 回答
0

如果只需要最后 10 行,可以使用 tail

$lines = `tail -n 10 $local_file`;

这里还有一些关于如何使用 fseek 获取最后几行的信息。

于 2013-04-24T19:28:30.537 回答