παράξενη συμπεριφορά των μεταβλητών στην PHP

ψήφοι
0

Γράφω το chatbot για το Facebook που χρησιμοποιούν php. Το ερώτημα από το facebook επεξεργάζεται μέσα από το αρχείο php. Και είναι Όμοια με αυτή τη λογική:

//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%), η μεταβλητή $ id δεν είναι πάντα η ίδια και έχω την λάθος εκτέλεση αλγορίθμου ... Το αρχείο καταγραφής της έναρξης και διακοπής είναι εδώ:

///////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 και είναι η πρώτη μου εφαρμογή με webservices. Θα μπορούσατε να δώσετε κάποια ιδέα για το πώς είναι δυνατόν να το διορθώσω;

Δημοσιεύθηκε 31/01/2017 στις 13:44
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

παράξενη συμπεριφορά των μεταβλητών στην PHP

ψήφοι
0

Γράφω το chatbot για το Facebook που χρησιμοποιούν php. Το ερώτημα από το facebook επεξεργάζεται μέσα από το αρχείο php. Και είναι Όμοια με αυτή τη λογική:

//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%), η μεταβλητή $ id δεν είναι πάντα η ίδια και έχω την λάθος εκτέλεση αλγορίθμου ... Το αρχείο καταγραφής της έναρξης και διακοπής είναι εδώ:

///////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 και είναι η πρώτη μου εφαρμογή με webservices. Θα μπορούσατε να δώσετε κάποια ιδέα για το πώς είναι δυνατόν να το διορθώσω;

Απαντήθηκε 31/01/2017 στις 13:44
πηγή χρήστη

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