PHP GCM 1000用户循环
我试图通过GCM在一个循环中发送一条消息,以绕过谷歌的批量限制 我在这里找到了一些非常有用的答案,这是我用来向数据库中的注册用户发送批量消息的最终php代码 但是,进程在1000后停止,我收到消息 批量(1016)上的邮件数超过了允许的最大值(1000) 有人能看到下面的代码有什么问题吗PHP GCM 1000用户循环,php,android,google-cloud-messaging,Php,Android,Google Cloud Messaging,我试图通过GCM在一个循环中发送一条消息,以绕过谷歌的批量限制 我在这里找到了一些非常有用的答案,这是我用来向数据库中的注册用户发送批量消息的最终php代码 但是,进程在1000后停止,我收到消息 批量(1016)上的邮件数超过了允许的最大值(1000) 有人能看到下面的代码有什么问题吗 <?php session_start(); include_once 'connect.php'; function send_notification($con,$registatoin_ids,
<?php
session_start();
include_once 'connect.php';
function send_notification($con,$registatoin_ids, $message) {
$url = 'https://android.googleapis.com/gcm/send';
$msg = array
(
'message' => "the message",
'title' => 'my title',
'subtitle' => 'subtitle. subtitle',
'msgcnt' => 3,
'vibrate' => 1,
'sound' => 'default',
'soundname' => 'beep.wav',
'largeIcon' => 'large_icon',
'smallIcon' => 'small_icon'
);
$fields = array
(
'registration_ids' => $registatoin_ids,
'data' => $msg
);
$headers = array(
'Authorization: key=' . apiKey,
'Content-Type: application/json'
);
$ch = curl_init();
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_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
$result = curl_exec($ch);
if ($result === FALSE) {
die('Curl failed: ' . curl_error($ch));
}
curl_close($ch);
echo $result;
}
if(isset($_SESSION['login_user'])){
if(isset($_POST["submit"]) && isset($_POST["message"])) {
$num=$con->query("SELECT gcm_regid from gcm_users")->rowCount();
$current_num=0;
$message=$_POST["message"];
for($i=0;$i<$num/1000;$i++){
$query=$con->query("SELECT gcm_regid from gcm_users LIMIT $current_num,1000");
foreach($query as $data) {
$row[]=$data["gcm_regid"];
}
$pushStatus = send_notification($con,$row, $message);
$current_num+=1000;
}
}else if(isset($_POST["logout"])){
if(session_destroy()) // Destroying All Sessions
{
header("Location: login.php"); // Redirecting To Home Page
}
}
?>
谢谢使用GCM,每个请求只能发送1000封电子邮件。将你的用户分成更小的组块(假设每个组块有500个用户:
$current_num,500
),并通过2个或更多请求向他们发送电子邮件。Thnx对于你的答案,我知道我只能发送1000个请求,在我的代码中,我尝试过这样做,但没有结果。你能看出上面的代码有什么错误吗?thnx againI将检查要传递以发送通知的$row数组的大小。你能确认一下它的尺寸是1000吗是的。我尝试将1000改为500,但最后我得到了相同的错误消息:批量消息数(1035)超过了允许的最大值(1000)