странное поведение переменных в PHP

голоса
0

Я пишу Chatbot для Facebook с помощью PHP. Запрос от Facebook обрабатывает через файл PHP. И simlar этой логике:

//got request from facebook
foreach ($data['entry'][0]['messaging'] as $message){
  if (checkAnswer($message['sender']['id'], $command)){
      $command = ;
      $command = empty($message['postback']) ? $message['message']['text'] : $message['postback']['payload'];
      $bot->send(new Message($message['sender']['id'], 'Thank you very much for participation!'));
  }
}
function checkAnswer($id, $text){
//some logic;
}

Если два сообщения от разных людей отправляются в один момент я наблюдая рядом. вызовите функцию checkAnswer не находится в очереди (я понял, записывая процесс выполнения с протоколирования в файл). Например, он может быть вызван по требованию 2 (запрос от Facebook), в то время как запрос 1 не завершен. И из-за этого (я не уверен на 100%), то переменная $ идентификатор не всегда то же самое и у меня есть неправильное выполнение алгоритма ... протоколируемой файл запуска и остановки здесь:

///////start////////////////////////
01:0:21 PM ID: 250 Text: 2
///////start////////////////////////
01:0:21 PM ID: 352 Text: 1
01:0:22 PM ID: 250 Text: 2
////////stop////////////////////////
01:0:22 PM ID: 352 Text: 1
////////stop////////////////////////

Я работаю с apache2 и php7 и это мое первое приложение с веб-сервисов. Не могли бы вы дать какие-либо понятия, как это можно исправить?

Задан 31/01/2017 в 13:44
источник пользователем
На других языках...                            


1 ответов

странное поведение переменных в PHP

голоса
0

Я пишу Chatbot для Facebook с помощью PHP. Запрос от Facebook обрабатывает через файл PHP. И simlar этой логике:

//got request from facebook
foreach ($data['entry'][0]['messaging'] as $message){
  if (checkAnswer($message['sender']['id'], $command)){
      $command = "";
      $command = empty($message['postback']) ? $message['message']['text'] : $message['postback']['payload'];
      $bot->send(new Message($message['sender']['id'], 'Thank you very much for participation!'));
  }
}
function checkAnswer($id, $text){
//some logic;
}

Если два сообщения от разных людей отправляются в один момент я наблюдая рядом. вызовите функцию checkAnswer не находится в очереди (я понял, записывая процесс выполнения с протоколирования в файл). Например, он может быть вызван по требованию 2 (запрос от Facebook), в то время как запрос 1 не завершен. И из-за этого (я не уверен на 100%), то переменная $ идентификатор не всегда то же самое и у меня есть неправильное выполнение алгоритма ... протоколируемой файл запуска и остановки здесь:

///////start////////////////////////
01:0:21 PM ID: 250 Text: 2
///////start////////////////////////
01:0:21 PM ID: 352 Text: 1
01:0:22 PM ID: 250 Text: 2
////////stop////////////////////////
01:0:22 PM ID: 352 Text: 1
////////stop////////////////////////

Я работаю с apache2 и php7 и это мое первое приложение с веб-сервисов. Не могли бы вы дать какие-либо понятия, как это можно исправить?

Ответил 31/01/2017 в 13:44
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more