Нужно отправить уведомление в партии 1000

Я создал приложение для уведомлений, теперь я хочу отправить уведомление группе из 1000 пользователей, но поскольку я новичок, я не знаю, как создать эту группу.

это мой код для отправки уведомлений.

<?php
include('header.php');

define( 'API_ACCESS_KEY', '[API-KEY comes here]' );

$sql="SELECT * FROM user_data";
$result = mysqli_query($conn, $sql) or die ('Error'.mysqli_error($conn));
$registrationIds=array();
while($row=mysqli_fetch_assoc($result)){

$registrationIds[] = $row['allow'];
}
$ids=json_encode($registrationIds);
$fields = array
(
'registration_ids'  => $registrationIds
);

$headers = array
(
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );

echo $result;


?>

Теперь я могу отправлять уведомления пользователям, но как я могу отправлять уведомления партиями по 1000, если у меня 10000 пользователей?

1

Решение

Примерно так (при условии, что вы хотите отправить пакет из 1000 регистрационных идентификаторов с каждым запросом curl):

$batch_size = 1000; // 1000 per request

$iterations = ceil(count($registrationIds) / $batch_size); // determine how many iterations are needed

for ($i = 0; $i < $iterations; $i++) {
$offset = $i * $batch_size;
$batch_of_1000_user_ids = array_slice($registrationIds, $offset, $batch_size);

// json_encode, prepare headers and send curl request
}
0

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

Надеюсь, это поможет вам.

    // Chunk of Array with 999 Records, I have not taken risk for 1000 users :D
// Here $array is a collection of rows which you get from Table.
$final_array = array_chunk($array, 999);

// Loop for Every Sub Array and Send to FCM Server
foreach($final_array as $array_of_chunk) {

// Your code for sending notification...
// $registrationIds = $array_of_chunk;

}

Вы можете увидеть полный код для PHP здесь Отправляйте уведомления Firebase более чем 1000 пользователям одновременно из PHP.

Спасибо.

1

Выполнить PHP скрипт через командную строку или из командного файла:

SET PATH=%PATH%;/FULLPATH/TOPHP/EXECUTABLE
php /FULLPATH/PHPSCRIPT.php 1>execution.log 2>executionError.log

Обедать несколько потоков в PHP, следуйте этому примеру:PHP многопоточность
Чтобы установить pthread, следуйте этому Руководство по установке PTHREAD

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector