PHP Ignoring my max_execution_time

2019-03-13 06:30发布

问题:

I have some task in my script that is about converting video with ffmpeg . I do this with codeigniter 2.0.3 and locate the script at libraries and use shell_exec() to run ffmpeg.

There are 3 tasks in my php script.

  1. Upload File
  2. Convert video to .flv
  3. Generate thumb
  4. Save to db.

When I upload file, my php script start to convert my uploaded video. But when converting is end about over 5 minutes. Its not continue to generate thumb. And Its say

PHP Fatal error: Maximum execution time of 300 seconds exceeded in C:\AppServ\www\mis\application\libraries\my_video_utility.php on line 102, referer: http://localhost/mis/test/

I have set my max_execution time, max_input_time, etc to 3600 in php.ini also add set_time_limit() and set_ini() in my php script. But, its still get error.

But, when I uploaded short video, its done.

回答1:

Ok. I do this my self. I have contacted my teacher. There is a something that CodeIgniter not include this in their documentation.

At line 103 in system/core/CodeIgniter.php

if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
{
    @set_time_limit(300);
}

I try to change the value and it works.



回答2:

Solution to change set_time_limit() function in CodeIgniter.php is works, but I'm think it's not good idea to change framework's core files.

I'm found another decision, you can call set_time_limit() where you need and it will be overlapp setting of time limit in CodeIgniter.php.



回答3:

Codeigniter 2 has the set_time_limit function run with 300. After upgrading to Codeigniter 3, one thing started failing. After viewing this post, I realized that the set_time_limit call was removed in 3, so you may have to add the code in the accepted answer to your particular problem code. I would not recommend adding it back into the Codeigniter.php