Есть PHP скрипт, который корректно работает локально. Разместил его на хостинге, суть в том, чтоб клиент мог нажать на кнопку и скрипт был выполнен. Но из-за того, что скрипт работает очень долго, ответом приходит ошибка 504. Что мне нужно сделать, чтоб такой ошибки не было?
Скрипт работает долго, но корректно. Он обрабатывает кучу сообщений на почте через imap и вытягивает из писем нужную информацию.
Подскажите, пожалуйста, что мне нужно сделать, чтоб скрипт выполнялся на хостинге без ошибок?
Дмитрий, да, я читал про cron. Но я понял так, что с помощью него можно делать отложенный запуск. А он так же поможет мне корректно выполнять и завершать работу скрипта?
Клиент нажимает кнопку, его задача записывается в очередь, ему возвращается "ОК".
Скрипт по крону разбирает очередь и отправляет отчет клиенту, например, на почту.
FanatPHP, напрямую лезть в крон - это, конечно, колхоз. Но программисту полезно знать, что где-то там, за кулисами очередей фреймворка, именно крон поддерживает всю эту систему. Тем более что обработчику совершенно необязательно быть частью сайта и вообще быть написанным на том же языке.
Сейчас взглянул в кронтаб сайта на старом битриксе, с очередями которого когда-то решил не связываться - там три скрипта на пыхе, три шелла, один на питоне...
Если nginx, можно попробовать fastcgi_finish_request()
Клиенту будет отправлен ответ и соединение закрыто, сессия разлочится, скрипт продолжит выполняться в фоне.