Установка параметров php через Nginx
Есть частая задача — изменить параметры php для одного определённого url.
Например, вы импортируете на какой-то странице xml с товарами, и вам нужно увеличить именно для неё memory_limit и max_execution_time.
Правки в /etc/php5-fpm/sites-available/sitename.conf не подходят — ибо это изменит работу всего сайта, а нам нужен один конкретный url. В этой ситуации, как и во многих других, нам поможет Nginx!
Nginx крайне универсальный сервер и позволяет указывать каким образом работать с разными адресами. Мы уже наблюдали это при ограничении запросов с одного ip.
Здесь мы используем тот же метод — выделим один адрес и укажем ему собственные настройки.
Вот и всё, при обращении на адрес /import.php, лимиты на память и время увеличатся вдвое.
Дальше можно проявить фантазию, и настроить разные параметры для выдачи каталога, личного кабинета и чего угодно.
Помимо PHP_VALUE есть еще и PHP_ADMIN_VALUE, который не позволит запускаемому скрипту изменить выставленный параметр.
Например, вы импортируете на какой-то странице xml с товарами, и вам нужно увеличить именно для неё memory_limit и max_execution_time.
Правки в /etc/php5-fpm/sites-available/sitename.conf не подходят — ибо это изменит работу всего сайта, а нам нужен один конкретный url. В этой ситуации, как и во многих других, нам поможет Nginx!
Nginx крайне универсальный сервер и позволяет указывать каким образом работать с разными адресами. Мы уже наблюдали это при ограничении запросов с одного ip.
Здесь мы используем тот же метод — выделим один адрес и укажем ему собственные настройки.
location ~ ^\\/import.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PHP_VALUE "memory_limit = 256M";
fastcgi_param PHP_VALUE "max_execution_time = 60";
fastcgi_pass backend-sitename;
}
Вот и всё, при обращении на адрес /import.php, лимиты на память и время увеличатся вдвое.
Дальше можно проявить фантазию, и настроить разные параметры для выдачи каталога, личного кабинета и чего угодно.
Помимо PHP_VALUE есть еще и PHP_ADMIN_VALUE, который не позволит запускаемому скрипту изменить выставленный параметр.