0

首先,我检查数据库表以查找不同用户发布的未发送消息。如果可用,则执行以下代码并每 5 分钟使用 cron 作业运行一次。

SELECT * FROM `jkeio_community_gcmusers`; //contain all gcm users
$i=0;

while($data_apps=mysql_fetch_array($data_app))
         {
 $message1=$i.'You have a new item in Akhbar';
 sendnotificationandroid($data_apps['gcm_regid'],$message1); //send function for sending push notification for android and it sends message via curl method
$i++;

             }

发送消息后,我将使用更新查询将未发送标志设置为发送

对于 100 或 200 个用户来说,一切都很好,但是当用户增加时,消息会按时发送,应该是这样,您能否建议我如何实现这一点

在此先感谢阿南德尼玛

4

1 回答 1

1

GCM 允许我们一次向多达 1000 个设备发送通知,因此我建议重构您的方法sendnotificationandroid以改为接受一组 gcm 注册 ID。

例如,您可以首先浏览数据库行并收集 reg id 并将它们附加到数组中。一旦数组大小达到 1000(或不再添加 reg id),将其传递给您的新sendnotificationandroid方法,该方法将构建通知负载,如下所示:

{
  "registration_ids" : ["regId1", "regId2", "regId3", ....., "regId1000"],
  "data" : {
    ...
  },
}

因此,对于 80K 用户,您将需要大约 80 个循环来发送通知,并且正如 Alma Do Mundo 建议的那样,最好使用 curl_multi_exec 将请求发送到 GCM 服务器。

于 2013-08-12T17:02:15.207 回答