Долгая обработка AjaxForm

Написал сниппет обработку для заявок с сайта которая отправляет данные в crm систему (назвал crmhook):

[[!AjaxForm?
&snippet=`FormIt`
&hooks=`email,crmhook`

В итоге если оставить заявку она идет и на почту и в crm. Но из-за долгой обработки crm форма зависает на несколько секунд пока придет ответ.

Вопрос: можно ли сразу после проверки email отправить пользователю что запрос ушел? и как это сделать?
а crmhook обрабатывался в фоне.
Спасибо заранее.
КА
14 октября 2017, 09:05
modx.pro
1 831
0

Комментарии: 12

Володя
14 октября 2017, 12:34
+2
если сервер использует php-fpm можно попробовать добавить в хук crmhook, в самое начало
if (function_exists('fastcgi_finish_request')) {
    return true;
    session_write_close();
    fastcgi_finish_request();
}

// ниже все без изменений
    КА
    14 октября 2017, 12:46
    0
    Не помогло, сайт на beget, видимо сервер без php-fpm
      Володя
      14 октября 2017, 13:25
      2
      +1
      да я тож чет фигню написал, вот так будет верно
      if (function_exists('fastcgi_finish_request')) {
          echo json_encode(array("success"=>1,"message" => "Сообщение отправлено"));
          session_write_close();
          fastcgi_finish_request();
      }
      // ниже все без изменений
        Илья Уткин
        14 октября 2017, 14:09
        0
        Век живи — век учись. Я бы начал с очередями мудрить и запуском обработки по крону)
          КА
          14 октября 2017, 15:13
          0
          К сожалению так тоже не сработало( форма также зависает.
          message выводится другой не «Сообщение отправлено»

          На хостинге поставил галочку «Режим cgi», тоже не работает
            Володя
            15 октября 2017, 10:11
            +1
            Значит не судьба(
            Тогда возможно это ваш вариант
              КА
              15 октября 2017, 12:28
              0
              Какой вариант? ссылка ведет сюда же, что я попробовал и не получилось.
                Владимир
                15 октября 2017, 13:05
                0
                Илья Уткин Вчера в 14:09 # ↑ 0
                Век живи — век учись. Я бы начал с очередями мудрить и запуском обработки по крону)
                вот куда ведет ссылка
                  Володя
                  15 октября 2017, 13:21
                  +1
                  Да, все верно это был совет обратить внимание на комментарий Ильи.
                  Пишите данные в бд/файл/кудатоеще и затем как вариант все это уже независимо от формы отправляете в crm.
                    КА
                    15 октября 2017, 13:28
                    0
                    Не верю что все так сложно должно быть, разве нельзя команду которая сообщает об успехе в конце прописать в самом начале? пусть говорит что все ок и выполняет код дальше до конца. Я просто не знаю какая это команда и точную логику работы.
                      Володя
                      15 октября 2017, 13:31
                      0
                      я вообще FormIt не использую, так что незнаю.
                      Возможно кто то подскажет вам что то еще.
                        КА
                        15 октября 2017, 13:34
                        0
                        хорошо, спасибо и на этих подсказках!

                        А что используете? может оно лучше подойдет мне?
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    12