Set ini max_execution_time doesn't work

后端 未结 4 2047
粉色の甜心
粉色の甜心 2020-12-15 10:49

Before I use nginx and php-fpm, I used Apache, so when I wanted only one of my cron jobs to run without time execution limitation, I used these lines in my PHP code:

相关标签:
4条回答
  • 2020-12-15 11:12
    ini_set('max_execution_time', 0);
    

    do this if "Safe Mode" is off

    set_time_limit(0);
    

    Place this at the top of your PHP script and let your script loose!

    Note: if your PHP setup is running in safe mode, you can only change it from the php.ini file.

    0 讨论(0)
  • 2020-12-15 11:17

    I think that if you have php-fpm and nginx "you can't" set this time only from PHP.

    What you could do is a redirect with the parameters indicating you where to continue, but you must control the time that your script is running to avoid timeout.

    If your process runs in a browser window, then do it with Javascript the redirect because the browser could limit the number of redirects... or do it with ajax.

    Hope that helps.

    0 讨论(0)
  • 2020-12-15 11:19

    Try This:

    Increase PHP script execution time with Nginx

    You can follow the steps given below to increase the timeout value. PHP default is 30s. :

    Changes in php.ini

    If you want to change max execution time limit for php scripts from 30 seconds (default) to 300 seconds.

    vim /etc/php5/fpm/php.ini
    

    Set…

    max_execution_time = 300
    

    In Apache, applications running PHP as a module above would have suffice. But in our case we need to make this change at 2 more places.

    Changes in PHP-FPM

    This is only needed if you have already un-commented request_terminate_timeout parameter before. It is commented by default, and takes value of max_execution_time found in php.ini

    Edit…

    vim /etc/php5/fpm/pool.d/www.conf
    

    Set…

    request_terminate_timeout = 300
    

    Changes in Nginx Config

    To increase the time limit for example.com by

    vim /etc/nginx/sites-available/example.com
    
    location ~ \.php$ {
        include /etc/nginx/fastcgi_params;
            fastcgi_pass  unix:/var/run/php5-fpm.sock;
        fastcgi_read_timeout 300; 
    }
    

    If you want to increase time-limit for all-sites on your server, you can edit main nginx.conf file:

    vim /etc/nginx/nginx.conf
    

    Add following in http{..} section

    http {
        #...
            fastcgi_read_timeout 300; 
        #...
    }
    

    Reload PHP-FPM & Nginx

    Don’t forget to do this so that changes you have made will come into effect:

    service php5-fpm reload
    service nginx reload
    

    or try this

    fastcgi_send_timeout 50;
    fastcgi_read_timeout 50;
    

    fastcgi has it's own set of timeouts and checks to prevent it from stalling out on a locked up process. They would kick in if you for instance set php's execuction time limit to 0 (unlimited) then accidentally created an infinite loop. Or if you were running some other application besides PHP which didn't have any of it's own timeout protections and it failed.

    0 讨论(0)
  • 2020-12-15 11:20

    You can add request_terminate_timeout = 300 to your server's php-fpm pool configuration if you are tried all of solutions here.

    0 讨论(0)
提交回复
热议问题