Есть большая mySQL база, запрос может выполняться до нескольких минут, результат сохраняется в файл.
Необходимо выполнять его из PHP, а время выполнения PHP скрипта обычно ограниченно 30 секундами. Поэтому, просто выполнять запрос не выйдет - будет timeout.
Как это сделать?
P.S. Я подозреваю, что вопрос очень примитивный. Но и с PHP до этого я не работал практически. Посоветуйте, где можно найти информацию о решении этого вопроса.
UPD
Я знаю про параметр max_execution_time. Но разве увеличить его очень сильно - будет правильно?
Самый лучший вариант, это же конечно реализация очередей;
Самый же простой вариант, написание отдельного скрипта с этим запросом отдельно, этот скрипт дергать (запускать в фоновом режиме php.net/manual/ru/function.exec.php#86329 ) через основной скрипт, с помощью специальных функций, к примеру exec;
Самый сложный вариант оптимизировать запрос;
1. Вывод осуществляется в файл из БД напрямую или проводятся какие-то манипуляции с данными с помощью РНР и только потом это пишется в файл? Суть в том, что может РНР и не нужен вообще?
2. Скрипт РНР можно запустить в консоли, не обязательно его запускать в браузере.
3. Можно увеличить время жизни скриптов с помощью установок.
4. Запустить скрипт и отправить его в фоновый режим работать до тех пор пока он не завершит свою работу.
1. Вывод в файл осуществляется из БД напрямую. Но PHP нужен, т.к. на нем строится логика работы сайта(сервиса).
2. То что можно запускать в консоли знаю, но мне нужно в браузере - по действию пользователя в интерфейсе.
3. Это знаю. Но разве это правильно так делать?
4. Из браузера так можно?
3. Не совсем правильно, но если другого выхода нет, то можно.
4. Можно, я писал когда-то систему управления демонами из браузера. Исходник тут работает под Windows и *nix. Можете там посмотреть класс WebPhpDemon в нем метод run() - там механизм запуска.