Сейчас в базе 25 000 пользователей. Все пользователи подписаны на общую тему All
.
У меня есть две директории внутри public_html
. Во-первых, для API, встроенного в codeigniter. Этот API используется для предоставления данных для всех устройств adnroid и iOS.
Второй каталог для админ-панели, встроенной в Laravel. Мы используем его для загрузки данных, а также для отправки уведомлений по темам Firebase.
И API, и панель администратора совместно используют одну и ту же базу данных.
Если мы отправляем уведомление по темам, на которые не подписано большое количество пользователей, проблем не возникает.
Но если я отправлю уведомление на тему, в которой много пользователей, это вызовет проблемы на нашем сервере.
API перестает отвечать, или иногда слишком долго реагирует.
Иногда также перестает отвечать и админ-панель.
Я так растерялся, потому что все вещи обрабатываютсяfirebase. Я просто делаю один вызов API.
Может кто-нибудь объяснить, что является причиной проблемы? Или любая возможная причина?
Обновление
use Kreait\Firebase\Messaging;
use Illuminate/Support/Http/Request;
trait UserTrait {
public function notify(Request $request, Messaging $messaging) {
$message_hi = array(
"notification_type" => $notification_type,
"notification_title" => $notification_title_hi,
"icon_image" => $icon_image,
"notification_description" => $request->notificationText_hi,
"image_url" => $request->image_url,
);
$message = array(
"notification_type" => $notification_type,
"notification_title" => $notification_title,
"icon_image" => $icon_image,
"notification_description" => $request->notificationText,
"image_url" => $request->image_url,
);
$commodityIdArray = $request->cId
//to send all
if($request->notification_type == 1) {
$messaging->sendAll([
['topic' => 'All', 'data' => $message],
['topic' => 'All_hi', 'data' => $message_hi],
]);
} else {
//to send to a fourite topic subscribed by some users
//Prepare Condition for both hindi and english users
$topic_condition = "";
$topic_condition_hi = "";
foreach($commodityIdArray as $topic) {
$topic_condition .="'".$topic."' in topics && ";
$topic_condition_hi.="'".$topic."_hi' in topics &&";
}
//send notification to hindi and english topics
$messaging->sendAll([
['condition' => substr($topic_condition, 0, -3), 'data' =>
$message],
['condition' => substr($topic_condition_hi, 0, -3), 'data' =>
$message_hi],
]);
}
}