Как предотвратить запуск ajax нескольких экземпляров одного и того же php-файла? - PullRequest
0 голосов
/ 12 сентября 2018

Я хочу создать php-файл, который обрабатывает до 10 000 сообщений в минуту из ajax. Я хотел бы получить представление о том, хорош ли мой метод или есть лучший способ обрабатывать так много почтовых запросов. Я могу думать о ряде проблем с моим кодом.

javascript активно подписан на стример, который отправляет информацию о посте в мой javascript, и оттуда я хочу отправить данные поста в php-файл, который сначала поместит данные в массив, а во-вторых, каждую минуту, отправьте собранную информацию в таблицу mysql.

Так что я должен убедиться в нескольких вещах. Во-первых, функция ajax использует только один и тот же экземпляр файла php и не запускает несколько экземпляров. Это гарантирует, что все данные поступают в один и тот же массив php для передачи MySQL. Кроме того, эта информация не портится, поэтому мне нужно идентифицировать переменные данных в php так, как это работает. И в-третьих, поскольку я использую цикл while, у меня должен быть успешный способ закрыть цикл после его создания.

Вот мой JS:

subscription.addListener
    (
        onItemUpdate: function (updateInfo) 
        {
            // Lightstreamer published some data
            var epic = updateInfo.getItemName().split(":")[1];
            updateInfo.forEachField
            (
                function (fieldName, fieldPos, value) //foreach epic
                {
                    $.ajax
                    (
                        {
                             data: 
                             {
                                 epic: epic, 
                                 fieldName: fieldName, 
                                 price: value
                             },
                             type: 'POST',
                             url: 'compiler_and_send_to_mysqli.php',
                             success: function(data) 
                             {
                                  alert(data);
                             }
                        }
                    );
                }
            )
        }
   );

Вот мой php:

$i = 0
if(isset($_POST['data']))
{
    $i = $i + 1;
    $data[$i] = $_POST['data'];
}
if (empty($current_time)) //set the original time for the while loop 
{
    // get current date time initally keep the php instance running 
    // continuously (until the seesion closes?) in format: '2018:09:12-12:11:20';
}
while($current_time != '2099:01:01-01:01:01') //keeps php loop running for more ajax posts.
{
    $hour = date('s'); 
    if($hour == '00') // tests each minute, limits loop to 1 minute
    {
        $array[$set_for_mysqli] = $array_[$inserting_into];
        $array_[$inserting_into] = array(); //empty array
        // insert $array[$set_for_mysqli]; in mysqli dbase
        $array[$set_for_mysqli]; = array(); //empty array
        // break loop 
    }
    else
    {
        // insert $data[$i] from ajax post in to php $array_[$inserting_into];
        $data[$i] = unset($data[$i]);
    }
}

Мои вопросы:

  1. В этом случае AJAX будет запускать несколько экземпляров php-файла или будет использовать один и тот же экземпляр 10 000 раз в минуту?
  2. Если он работает так быстро, могут ли переменные php перепутаться, например к тому моменту, когда первые $ data [$ i] достигнут стадии вставки в нижней части кода, могут ли они теперь содержать данные из второго сообщения (если, скажем, сообщения ajax находятся в пределах 0,000001 секунды друг от друга)?
  3. Есть ли лучший способ приблизиться к обработке 10 000 записей ajax и как выглядит этот код?
  4. Должен ли я использовать сеансы?
  5. Будет ли смысл использовать memcache?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...