mysql — масштабирование сервера сообщений PHP в Google App Engine

Я построил приложение чата, которое позволяет ему «сохранять» эти сообщения, отправляя их на мой сервер / db, встроенное в PHP и MySQL.

Настройка моего нынешнего PHP-сервера принимает запрос и направляет его в надлежащее состояние с учетом заданного action передается в запросе как:

<?php

switch($action)
{

case "userLogin":
...
break;case "signUpUser":
...
break;

...

case "syncWithServer":
...
break;

?>

где каждый оператор case допускает вставку и обновление базы данных и последующий возврат при успешном выполнении действий с учетом переданных данных.

Для подробного примера у нас есть sendMessage случай ниже. Данные должны быть вставлены и затем возвращать самый последний sync_id для только что вставленного сообщения, а затем отправляться обратно пользователю, чтобы поддерживать синхронизацию:

case "sendMessage":

// Output is: {"message_sync_id":"4"}
if ($userId = authenticateUser($db, $username, $password, $gcmregid))
{
//echo "passed1";
if (isset($_REQUEST['to_user_sync_id']))
{
//echo "passed2";a
$touserid = $_REQUEST['to_user_sync_id'];
$unescapedMessage = $_REQUEST['message_text'];
$message = mysql_real_escape_string($unescapedMessage);
$campaign = $_REQUEST['shared_campaign_id'];
$location = $_REQUEST['shared_campaign_location_id'];

if($stmt1 = $db->prepare("INSERT INTO `messages` (`message_sync_id`,`from_user_sync_id`, `to_user_sync_id`, sent_dt, `message_text`,`shared_campaign_id`,`shared_campaign_location_id`)
SELECT
CASE
WHEN max(message_sync_id) is null
THEN 0
ELSE max(message_sync_id)
END + 1
, ?
, ?
, NOW()
, ?
, ?
, ?
from messages;"))
{
$stmt1->bind_param("sssss", $userId,$touserid,$message,$campaign,$location);
$stmt1->execute();
$stmt1->close();

$sqlMaxSyncId = "select max(message_sync_id) as message_sync_id from messages;";

if($resultMaxID = $db->query($sqlMaxSyncId))
{

$row = $resultMaxID->fetch_assoc();

$out = json_encode(array('message_sync_id' => $row['message_sync_id']));

error_log("sendMessage", 3 , $row['message_sync_id']);

}
else
{
$out = FAILED;
}

}
else
{
$out = FAILED;
}

}
else
{
$out = FAILED;
}
}
else
{
$out = FAILED;
}
break;

Если это будет запущено в Google App Engine, будут ли проблемы, если он будет масштабироваться до нескольких миллионов запросов в день?

Будут ли затронуты задержки?

Если так, как я могу облегчить?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]