Я пытаюсь обойти ненормальное поведение функции sleep (), назначив часть выполнения кода другой странице. Плагин WordPress, который я разрабатываю, требует, чтобы удаленный сайт выполнял вызов для подтверждения оплаты на сервер шлюза через JavaScript. Сервер должен немедленно ответить эхо-сообщением. После этого эха скрипту необходимо спать около 40 секунд, после чего он подтверждает, завершил ли удаленный интернет-магазин транзакцию (посредством другого вызова шлюза). Если этот второй вызов не будет получен в течение времени, то необходимо выполнить некоторые откаты.
Проблема в том, что функция Sleep () будет удерживать все команды эха, пока не перейдет в спящий режим - очевидно, вот как это работает . Я пробовал управлять очисткой кеша, например:
ob_start(); //with or without this, it still fails
echo "Success";
ob_flush();
flush();
sleep(4);
//run reversal codes if condition is met
Из других источников сообщается, что даже если это работает, всегда есть предупреждение, что браузеры (и даже некоторые настройки сервера) могут переопределить это поведение - так что это ненадежно.
Мой предварительный обходной путь - передать выполнение кода другому файлу через curl-post (надеюсь, это не будет ждать), и я могу это сделать. Вопрос в том, как мне дать этот URL-адрес в качестве локального адреса для оптимизации работы. Стремиться изо всех сил, включая рукопожатие TSL, для местного поста, кажется, за бортом!