запустить второй экземпляр с PHP и разрешить приостановку с переходом в спящий режим без генерации ошибки ТАЙМ-аута?

#php #multithreading #apache #google-checkout

#php #многопоточность #апач #google-проверка #apache

Вопрос:

Все оборвалось: необходимо выполнить функцию примерно через 5 минут после запроса, отправленного службой уведомлений Google Checkout.

Почему: Для работы History API требуется, чтобы транзакция была по крайней мере 5-минутной давности.

Что было опробовано, приостанавливая функцию с помощью sleep, но это генерирует ошибку ТАЙМ-аута в конце Google.

Основная проблема: функция должна выполняться, даже если пользователь переходит со страницы, перезагружает страницу, закрывает свой браузер или выходит из системы с Сайта..

Пробовал, погуглил, но толку мало.. Есть какие-нибудь идеи??

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

1. ignore_user_abort(TRUE) позволяет вашему скрипту продолжать выполняться после отключения удаленного пользователя.

2. Кроме того, есть ли лучший способ задать этот вопрос?

Ответ №1:

Похоже, это задача для cron. Вот возможный план реализации:

  1. Когда Google отправит уведомление о проверке, запишите детали уведомления и временную метку в свою базу данных.
  2. Настройте скрипт для запуска с помощью cron. Скрипт проверит базу данных на наличие новых уведомлений о проверке, которым не менее 5 минут.
  3. Затем скрипт получит доступ к History API для этих совпадающих записей, а затем пометит эти записи в базе данных, чтобы к ним больше не обращались при следующем запуске задания cron.

Задание cron может быть настроено на выполнение с любым интервалом, который вам нравится. Чем меньше интервал, тем быстрее будут выполняться запросы API истории, поскольку уведомления о проверке достигают 5-минутного возраста. Ваш cron-скрипт может записать результат запроса API истории в вашу базу данных, чтобы ваш веб-интерфейс мог извлечь его и показать пользователю.

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

1. cron имеет детализацию в 1 минуту, поэтому технически это не «любой интервал».