问题
I'm getting this Fatal Error Message in my codeIgniter, I've already tried some answers which has the same question.
I've already set my php.ini
max_execution_time = 300 max_input_time = 600 memory_limit = 128M
But still I'm getting the same Fatal error message, I don't know if the problem is in my code or in php settings.
Here are some my of codes in controller:
public function blog(){
$this->load->model("blog_model");
$data["title"] = "CodeIgniter Projects - Blog";
if($this->getLastUrl() == 'blog'){
$data["result"] = $this->blog_model->getBlogs();
$this->load->view("view_blog", $data);
}else{
$blog_name = $this->getLastUrl();
$data["result"] = $this->blog_model->getBlogDetails($blog_name);
$data["comment"] = $this->blog_model->getBlogComments($blog_name);
$this->load->view("view_blog_details", $data);
//check for reply
$url =$_SERVER['REQUEST_URI'];
$getLast = explode("/", $url);
$last = end($getLast);
if($last == 'reply'){
$this->load->library('form_validation');
$this->form_validation->set_rules('name', 'Name',
'trim|required|min_length[4]|xss_clean');
$this->form_validation->set_rules('message', 'Comment',
'trim|required|min_length[4]|xss_clean');
$this->form_validation->set_rules('email', 'Email Address',
'trim|required|valid_email');
if($this->form_validation->run() == FALSE)
{
$this->blog();
}
else
{
$msg = 'Message sent.';
$this->blog_model->addBlogComment();
$this->blog();
}
}
}
}
My main function is to add new comment in a blog, it works but it inserts duplicate data and I cant get rid of the fatal error message.
addBlogComment Function
function addBlogComment(){ $data=array( 'blog_id'=> $this->input->post('blog_id'), 'name' => $this->input->post('name'), 'email' => $this->input->post('email'), 'message' => $this->input->post('message'), 'created' => date('Y-m-d H:i:s') ); $this->db->insert('comment',$data); }
回答1:
I just found out the wrong loop in my code. The loop will has no exit and it will turns back all over again.
if($this->form_validation->run() == FALSE)
{
$this->blog();
}
else
{
$msg = 'Message sent.';
$this->blog_model->addBlogComment();
$this->blog();
}
it will always return a false value so it will execute and execute no end of loop.
回答2:
Try construct your controller like so:
public function blog( $blog_name = '', $action = '' ){
$this->load->model("blog_model");
// What if there is no blog name in the url
if ( empty( $blog_name ) ) {
// Load the list of blogs
$data["result"] = $this->blog_model->getBlogs();
$this->load->view("view_blog", $data);
} else {
// If the blog name in url exists and there is no action display the blog
if ( !empty( $blog_name ) && empty( $action ) ) {
$blog_name = $this->getLastUrl();
$data["result"] = $this->blog_model->getBlogDetails( $blog_name );
$data["comment"] = $this->blog_model->getBlogComments( $blog_name );
$this->load->view("view_blog_details", $data);
}
// else If there is the action "reply" check if there is some post
else if ( $action == 'reply' && $this->input->post( 'Comment' ) ) {
$this->load->library( 'form_validation' );
$this->form_validation->set_rules( 'name', 'Name', 'trim|required|min_length[4]|xss_clean' );
$this->form_validation->set_rules( 'message', 'Comment', 'trim|required|min_length[4]|xss_clean' );
$this->form_validation->set_rules( 'email', 'Email Address', 'trim|required|valid_email' );
if($this->form_validation->run() == FALSE) {
redirect( site_url( $blog_name ) );
} else {
$msg = 'Message sent.';
$this->blog_model->addBlogComment();
// Redirect to prevent F5 submitting duplicate data
redirect( site_url( $blog_name ) );
}
}
}
}
来源:https://stackoverflow.com/questions/14726085/codeigniter-fatal-error-allowed-memory-size-of-bytes-exhausted