I’ve been using a Vagrant development set up for a while now, which has introduced me to NGINX after always using Apache in the past. The transition has been fine in the main, though I had an issue yesterday with PHP scripts timing out on me, so needed to figure out how to extend the script execution time.
I’ve started using the excellent WP Migrate DB plugin to synch my local development environment database with the live staging server. It’s well worth spending $19 on the Pro version, by the way – it offers a lot of extra features for the small outlay.
The plugin works by you installing it on both your local and staging sites, and then authorising them to ‘see’ each other using private API keys – it’ll then push (or pull) and overwrite the database from whichever site you choose.
The problem I experienced was that the Smart Insights database is pretty large by WordPress standards – a good couple of hundred MB, and when attempting to pull this down to my local development environment I kept getting “504 Gateway Time-out” errors. Guessing it was more than likely a local timeout issue, I looked around on increasing the PHP timeout on NGINX for WordPress.
Depending on how you’re using NGINX, the answer is that you may have to change a few different things.
NB: I’m using Jeremy Felt’s ‘Varying Vagrant Vagrants’ setup here, so the instructions are specific to that, though I’ll include the default locations too.
Increasing the PHP timeout in the php.ini file
If using ‘Varying Vagrant Vagrants’;
- Open your vagrant-local folder root
- Open config/php5-fpm-config/php.ini
- Change the following line to the length of time you want (in seconds)
max_execution_time = 500
If using a standard server setup the instructions are the same, but the path will generally be /etc/php5/fpm/php.ini.
Increasing the PHP timeout in PHP-FPM
If using ‘Varying Vagrant Vagrants’ without changes, you don’t need this step, but best to check;
- Open your vagrant-local folder root
- Open config/php5-fpm-config/www.conf
- Change/add the following line to the length of time you want (in seconds)
request_terminate_timeout = 500
If using a standard server setup the instructions are the same, but the path will generally be /etc/php5/fpm/pool.d/www.conf.
Increasing the PHP timeout on NGINX config
If using ‘Varying Vagrant Vagrants’ without changes, you shouldn’t need this step either;
- Open your vagrant-local folder root
- Open config/nginx-config/nginx.conf
- Change/add the following line inside the existing http{} section, to the length of time you want (in seconds)
http { #... fastcgi_read_timeout 500; #... }
If using a standard server setup the instructions are the same, but the path will generally be /etc/nginx/nginx.conf.
Restarting PHP and NGINX
Don’t forget to restart both PHP and NGINX so your changes take affect! You can do this on the command line with the following;
service php5-fpm reload service nginx reload
After restarting, WP Migrate DB successfully migrated the database from the live staging server to my local copy – way easier than manually exporting/tranferring/importing databases manually!
Hope that helps someone save a bit of time – I’d be interested in knowing what other people think of NGINX in comparison to Apache – let me know!