Php 内存不足(已分配899678208)(尝试分配262144字节)

Php 内存不足(已分配899678208)(尝试分配262144字节),php,Php,我正在学习mvc。并尝试编写博客代码。所以我犯了一个错误 致命错误:允许的内存大小134217728字节已用尽(已尝试 在上的C:\xampp2\htdocs\blog\u mvc\controllers\Users.php中分配262144字节) 第7行 我试图将内存限制改为5121024,直到20000。它不起作用。 我也试着改成-1。 而且它不是Mb。 我不知道该怎么办在此处输入代码 View/login.php <?php session_start(); include("m

我正在学习mvc。并尝试编写博客代码。所以我犯了一个错误

致命错误:允许的内存大小134217728字节已用尽(已尝试 在上的C:\xampp2\htdocs\blog\u mvc\controllers\Users.php中分配262144字节) 第7行

我试图将内存限制改为5121024,直到20000。它不起作用。 我也试着改成-1。 而且它不是Mb。 我不知道该怎么办<代码>在此处输入代码

View/login.php

<?php  
session_start();
include("models/db.php");
include("controllers/Users.php");
echo ("memory limit: " . ini_get("memory_limit") . "<br />"); 
echo ("memory usage: " . round(memory_get_usage(true)/1048576,2) . "Mb (" . 
memory_get_usage(true) . " bytes)<br />"); 


if(($_SERVER['REQUEST_METHOD'] == 'POST') && isset($_POST["signin"])){

   $object2 = new Users;
   $object2->login($_POST["username"],$_POST["password"]); 

}

?>

<!DOCTYPE html>
<html>
    <head>
        <title>Login</title>
        <?php include("includes/inc.style.php")?>
    </head>
    <body>
        <div class="container">
            <div class="row login-form-wrapper">
                    <form  class="login-form" action="" method="post" >
                    <div class="form-group"><label for="username">Логин</label><input class="form-control" id="username" type="text" name="username"></div>
                <div class="form-group"><label for="password">Пароль</label><input class="form-control" id="password" type="password" name="password"></div>
                <input class="form-control btn btn-primary" type="submit"  name ="signin" value="Войти">
                <a href="signupform.php">Dign up</a>
            </form>
            </div>
        </div>
</body>

登录
Логин
Пароль

Controllers/Users.php

<?php 
class Users extends DB{
    function set($username , $password , $email){
        return $this->insert($username , $password , $email);
    }
    function login($username , $password){
         return $this->login($username , $password );
    }
} 

我想你是想从
用户
调用
DB
类中的家长。如果您的类扩展了另一个类,那么您不需要重新定义该方法,只要它不是抽象的。只需从类用户中删除
登录
功能

//function login($username , $password){
//     return $this->login($username , $password );
//}
或者,您可以使用以下语法调用父级:

return parent::login($username, $password);

建议您了解应用程序正在使用的内存量。也就是说,您可以在运行时设置内存利用率限制,如下所示:

将这些行中的一行直接添加到下面的代码中

session_start();


ini_set("memory_limit", "500M"); // Half a gig
ini_set("memory_limit", "-1"); // No memory limit.

这将停止错误。

返回$this->login($username,$password)返回parent::login($username,$password)
以便将参数传递给父类的
DB
类的
login()
方法。@MonkeyZeus它可以工作。我想调用parent的方法并使用$this。非常感谢。与其在这个问题上投入越来越多的内存,不如花点时间问问自己“我的登录脚本真的需要超过800MB的内存吗?”@Sammitch恕我直言,你生活在什么乌托邦?请不要向新的PHP用户推荐这样的设置。500M的PHP脚本非常慷慨。不限制内存使用只会让PHP吃掉所有可用的RAM,而不会解决核心问题。我不是他的教授。他问我如何减轻这个错误,我告诉了他。他绝对应该专注于只使用所需的内存和保持保守,但我不会拒绝任何人的知识。考虑到无论你将限制提高多高,它都不会解决无限递归问题,这是一个非答案。此外,OP已经尝试提高限制,所以这甚至没有提出一个新的想法来尝试。@Justin Jack谢谢。事实上我试着设定-1。我这样做是为了知道这里是否真的没有足够的内存,或者只是这里代码中的无限循环或者一些错误。即使在-1时,它也会显示错误。现在我知道这是因为递归,它是有效的。我想调用parent的方法并使用$this。非常感谢你。我一整天都在努力修理它。我几乎要放弃学习它了。但我在这里使用子类的登录方法作为控制器。如果我直接调用DB方法。这不是mvc,不是吗?或者我应该将孩子的登录方法重命名为不同的?
session_start();


ini_set("memory_limit", "500M"); // Half a gig
ini_set("memory_limit", "-1"); // No memory limit.