cómo enviar una notificación a millones de dispositivos Android en php usando GCM

Soy un nuevo desarrollador de la aplicación de Android. Estoy enviando notificaciones desde el código PHP a los dispositivos Android usando GCM. Hice una serie de todos los identificadores de dispositivos y los envié, pero el problema es cuando envío más de mil dispositivos. Encontré un error interno del servidor. Mi código está debajo

function _send_notification($registatoin_ids = '', $message = '') { $url = 'https://android.googleapis.com/gcm/send'; $fields = array( 'registration_ids' => $registatoin_ids, 'data' => $message, ); //pr($fields); $headers = array( 'Authorization: key=' . $this->GOOGLE_API_KEY, 'Content-Type: application/json', 'Connection: keep-alive', 'Keep-Alive: 300' ); $ch = curl_init(); // Set the url, number of POST vars, POST data curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //curl_setopt($ch, CURLOPT_CONNECT_ONLY, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 10000); // drop connection after 10000 seconds // Disabling SSL Certificate support temporarly curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); // Execute post $result = curl_exec($ch); if ($result === FALSE) { die('Curl failed: ' . curl_error($ch)); } // Close connection curl_close($ch); return $result; //exit; } 

Por favor, ayúdame

La cantidad máxima de ID de registro que puede enviar es de 1,000. Tendrá que dividirlo en varias llamadas curl con agrupaciones de id. De registro de 1k cada una.

 function _send_notification($registration_ids = '', $message = '') { $url = 'https://android.googleapis.com/gcm/send'; $groups = array_chunk($registration_ids, 1000); foreach($groups as $group) { $fields = array( 'registration_ids' => $group, 'data' => $message, ); // ... // rest of your curl code } }