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

时间:2018-11-26 17:51:03

标签: php

我正在学习mvc。并尝试编写博客。所以我收到错误

严重错误:耗尽的134217728字节允许的内存大小(尝试到     分配262144字节)在C:\ xampp2 \ htdocs \ blog_mvc \ controllers \ Users.php中     第7行

我尝试将memory_limit更改为512,1024直到20000。它没有起作用。 我也尝试更改为-1。 它不是Mb。 我不知道该怎么办。 enter code here

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 );
    }
} 

Models / db.php

<?php 
class DB{
    var $conn;

    function __construct(){
        $this->conn=new mysqli("localhost","root","","Blog");
        if($this->conn->connect_error){
            echo "DB connection error" . $this->conn->connect_error;
        }
        else{
            echo "Connected to db succesfully";
        }
    }

    function login($username , $password){
       echo memory_get_usage();
       $sql="SELECT * from users where username='$username' and password='$password'" ;
        $result=$this->conn->query($sql);
        if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
                $_SESSION["username"]=$row["username"];
            }
            echo "Success"; //header('Location: post_publication.php');
        } else {
             echo "Не удалось . Ошибка" .$this->conn->error;
        }


        $this->conn->close();
    }   
    function insert($username , $password , $email){
        $result=$this->conn->query("INSERT INTO users VALUES('','$username','$password','$email','2')");

        if ($result === TRUE) {
            header('Location: login.php?registered=true');
        }
        else{
            $error= "Не удалось . Ошибка" .$this->conn->error;
        }
        $this->conn->close();
    }
    function __destruct(){
        if ($this->conn!==null) { $this->conn = null; }
    }




}

2 个答案:

答案 0 :(得分:-1)

我认为您正在尝试从DB的{​​{1}}类中调用父级。如果您的类扩展了另一个类,则只要该方法不是抽象的,就无需重新定义该方法。只需从用户类中删除User函数。

login

或者您可以使用以下语法呼叫父母:

//function login($username , $password){
//     return $this->login($username , $password );
//}

答案 1 :(得分:-2)

建议知道您的应用程序正在使用多少内存。话虽如此,您可以在运行时设置内存利用率限制,如下所示:

将这些行之一直接添加到

session_start();


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

那应该停止错误。