Передача информации клиенту и продолжение работы php скрипта

12
SQ
На сайте с 17.10.2011
Offline
75
SPQ
1163

Всем добрый день!

У меня есть php скрипт, который обрабатывает аякс запросы. После выдачи ответа клиенту скрипт должен продолжить работу.

Пробую использовать этот механизм:

ignore_user_abort(true); // отсоединение клиента не должно прерывать выполнение скрипта

set_time_limit(0); // дальнейшее время работы не ограничено

ob_start(); // включить буферизацию

echo $p1."|".$p2."|".$p3."|".$p4; // это результат для аякса

header('Connection: close'); // сообщить клиенту что далее ничего нет

header('Content-Length: '.ob_get_length());

ob_end_flush(); // очистить буфер всеми способами

ob_flush();

flush();

Такая комбинация помогает в работе, но только если далее не включаются curl , а мне как раз их надо использовать. При появлении curl клиент ждет все время запросов курлами, а это достаточно долго, и только после этого получает свою информацию.

Пробовал использовать fastcgi_finish_request(); , но он убивает все следующие за ним курлы.

Есть ли несложное решение задачи?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#1

SPQ, fastcgi_finish_request() это как раз то, что вам нужно. Но он будет работать, если у вас php работает в fastcgi режиме, т.е. с помощью сервиса php-fpm. У вас VPS или shared хостинг?

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Samail
На сайте с 10.05.2007
Offline
361
#2

Можно то что делает скрипт после echo, выполнять другим скриптом, а его запускать кёрлом с маленьким таймаутом.

SQ
На сайте с 17.10.2011
Offline
75
SPQ
#3
Оптимизайка:
SPQ, fastcgi_finish_request() это как раз то, что вам нужно. Но он будет работать, если у вас php работает в fastcgi режиме, т.е. с помощью сервиса php-fpm. У вас VPS или shared хостинг?

У меня VPS

---------- Добавлено 01.04.2019 в 19:25 ----------

Samail:
Можно то что делает скрипт после echo, выполнять другим скриптом, а его запускать кёрлом с маленьким таймаутом.

Можно простой пример?

Оптимизайка
На сайте с 11.03.2012
Offline
396
#4

SPQ, в таком случае убедитесь, что ваши скрипты обрабатываются с помощью php-fpm. Если это не так (например, у вас apache + mod_php), то поменяйте конфигурацию:

http://blog.sedicomm.com/2018/05/26/kak-ustanovit-apache-s-php-fpm-fastcgi-na-ubuntu-16-04/

https://habr.com/ru/post/320036/

SQ
На сайте с 17.10.2011
Offline
75
SPQ
#5
Оптимизайка:
SPQ, в таком случае убедитесь, что ваши скрипты обрабатываются с помощью php-fpm. Если это не так (например, у вас apache + mod_php), то поменяйте конфигурацию:

http://blog.sedicomm.com/2018/05/26/kak-ustanovit-apache-s-php-fpm-fastcgi-na-ubuntu-16-04/
https://habr.com/ru/post/320036/

настройки fpm есть в PHP 5.6.33-0+deb8u1 (native)

---------- Добавлено 01.04.2019 в 19:52 ----------

Переключил режим в CGI и добавил fastcgi_finish_request(); , курлы умерли

Оптимизайка
На сайте с 11.03.2012
Offline
396
#6

SPQ, CGI это не то же самое, что fastcgi через php-fpm. Вам нужно именно через php-fpm.

SQ
На сайте с 17.10.2011
Offline
75
SPQ
#7
Оптимизайка:
SPQ, CGI это не то же самое, что fastcgi через php-fpm. Вам нужно именно через php-fpm.

К сожалению, я не смогу пока сам сделать нужные установки, но смогу попросить об этом хостера. Надеюсь, помогут. Наряду с обработчиками apache и cgi мне попросить доустановить fastcgi?

S
На сайте с 30.09.2016
Offline
469
#8

И сайт перестанет работать.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
SQ
На сайте с 17.10.2011
Offline
75
SPQ
#9
Sitealert:
И сайт перестанет работать.

Почему перестанет?

S
На сайте с 30.09.2016
Offline
469
#10

Если сайт завязан на конфигурацию апача, то эта привязка перестанет работать.

Ну то есть конфигурация изменится, пойдут "косяки", и придётся привлекать специалистов, чтобы всё перенастроить.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий