Я хочу создать 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]);
}
}
Мои вопросы:
- В этом случае AJAX будет запускать несколько экземпляров php-файла или будет использовать один и тот же экземпляр 10 000 раз в минуту?
- Если он работает так быстро, могут ли переменные php перепутаться, например к тому моменту, когда первые $ data [$ i] достигнут стадии вставки в нижней части кода, могут ли они теперь содержать данные из второго сообщения (если, скажем, сообщения ajax находятся в пределах 0,000001 секунды друг от друга)?
- Есть ли лучший способ приблизиться к обработке 10 000 записей ajax и как выглядит этот код?
- Должен ли я использовать сеансы?
- Будет ли смысл использовать memcache?
Спасибо.