PHP запрашивает пользовательские данные во время выполнения скрипта - PullRequest
0 голосов
/ 15 января 2019

У меня есть проблема, и я не знаю, как ее решить. Я работаю с PHP и библиотекой TDLib для управления API Telegram, для этого я делаю асинхронные вызовы через интерфейс JSON:

https://core.telegram.org/tdlib/getting-started#tdlib-interface

Telegram API работает через обновления. Программа получает обновления Telegram, на которые должен быть дан правильный ответ в порядке их получения. Для этого у меня есть скрипт с циклом 'while', который работает правильно для меня. Вот пример алгоритма:

void *client = td_json_client_create();
// somehow share the client with other threads, which will be able to send requests via td_json_client_send
const double WAIT_TIMEOUT = 10.0; // seconds
int is_closed = 0;  // should be set to 1, when updateAuthorizationState with authorizationStateClosed is received
while (!is_closed) {
  const char *result = td_json_client_receive(client, WAIT_TIMEOUT);
  if (result) {
    // parse the result as JSON object and process it as an incoming update or an answer to a previously sent request
  }
}
td_json_client_destroy(client);

Что ж, проблема в том, что в любой момент времени статус обновления API равен «Ожидание номера телефона» , и в этот момент у пользователя должен быть запрошен номер телефона. Впоследствии, после нескольких обновлений, Telegram отправляет код на этот номер телефона, поэтому мое приложение снова должно запросить у пользователя ввести полученный код, когда статус API равен «Ожидание кода» .

Для этого я запрограммировал две формы , одну для запроса номера телефона, а другую для запроса кода. Проблема в том, что формы не отображаются, пока скрипт не завершит , что не помогает.

Я попытался обработать поток сценария с помощью break или return в зависимости от обстоятельств, и на этот раз я получаю формы, отображаемые в нужное время, но ожидаемый выполнение скрипта заканчивается, после отправки форм он начинает выполнять весь код с самого начала, перезапуская переменные.

В любом случае, я надеюсь, что я правильно объяснил, и поэтому кто-то может дать мне лучший совет, потому что я действительно потерян.

...