Как остановить cURL от блокировки моей сессии PHP?

В основном, я использую cURL для вызова API, которые я не могу реализовать изначально на PHP. Когда я звоню, это блокирует мою сессию PHP. Я не могу подключиться к моему сайту с другой вкладки в моем браузере. Если я удалю cookie сеанса, я могу подключиться отлично. Раньше, когда у меня не было тайм-аута в cURL, это длилось бы бесконечно.

Это то, как работает PHP-реализация cURL, или есть ли способ обойти это?

Как уже упоминалось здесь , вы можете попытаться выполнить запрос cURL без открытия сеанса, например, выполнив session_write_close() перед отправкой запроса и session_start() после того, как вы его обработали.

Это не имеет никакого отношения к cURL: в основном каждая долговременная операция подвержена той же самой проблеме.

Вот как мы обычно справляемся с этим:

  • Запрос, который должен запустить процесс (например, запустить команду cURL), НЕ должен этого делать, а просто аутентифицировать его и создать для него единовременный билет, сохранить его в сеансе и вернуть его
  • При возврате клиент должен теперь запросить запуск cURL, используя одноразовый билет, но НЕ сеанс. Это удерживает сеанс разблокированным. Результаты должны храниться промежуточно.
  • По завершении продолжительного процесса клиент использует сеанс для сбора промежуточно сохраненных результатов.