我可以在这里使用哪种逻辑?

时间:2016-02-19 13:32:16

标签: php push-notification google-cloud-messaging

我有100000个用户,我总是发送信息,实际上这些信息并没有传达给所有用户,我不知道为什么。

我将附上发送php文件,请看看你是否可以告诉我这有什么问题以及我应该使用哪种逻辑。请注意,如果我将1000号码更改为3000而没有用户收到,我也不知道为什么。

<?php include('session.php');?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
header('Content-type: text/html; charset=utf-8');
//generic php function to send GCM push notification
function sendPushNotificationToGCM($registatoin_ids, $message) {
    //Google cloud messaging GCM-API url
    $url = 'https://android.googleapis.com/gcm/send'; 



    $fields = array(
        'registration_ids' => $registatoin_ids,
        'data' => $message,
    );

    define("GOOGLE_API_KEY",       "my_key"); 

    $headers = array(
        'Authorization: key=' . GOOGLE_API_KEY,
        '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_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
    //curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
    $result = curl_exec($ch);       
    if ($result === FALSE) {
        die('Curl failed: ' . curl_error($ch));
    }
    curl_close($ch);
    return $result;
 }
 ?>

<?php
header('Content-type: text/html; charset=utf-8');
$response = array();
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();

if (isset($_GET['level']) &&isset($_GET['m1']) &&isset($_GET['m2'])  &&isset($_GET['m3']) &&isset($_GET['m4']) &&isset($_GET['m5']) &&isset($_GET['m6']) &&isset($_GET['m7'])){
    $level=$_GET['level'];


    $m1=$_GET['m1'];
    $m2=$_GET['m2'];
    $m3=$_GET['m3'];
    $m4=$_GET['m4'];
    $m5=$_GET['m5'];
    $m6=$_GET['m6'];
    $m7=$_GET['m7'];


    $m11=mysql_real_escape_string($_GET['m1']);
    $m21=mysql_real_escape_string($_GET['m2']);
    $m31=mysql_real_escape_string($_GET['m3']);
    $m41=mysql_real_escape_string($_GET['m4']);
    $m51=mysql_real_escape_string($_GET['m5']);
    $m61=mysql_real_escape_string($_GET['m6']);
    $m71=mysql_real_escape_string($_GET['m7']);

    mysql_query("SET NAMES 'utf8'");
    $resultaa = mysql_query("INSERT words (id, level, m1, m2, m3, m4, m5, m6, m7) VALUES (NULL,'$level','$m11','$m21','$m31','$m41','$m51','$m61','$m71')");
    $id = mysql_insert_id();

    if($level == 0){
        $result = mysql_query("SELECT Rid FROM users ");

    }else{
        $result = mysql_query("SELECT Rid FROM users where level = '$level'  OR level = '4'");
        //$result = mysql_query("SELECT Rid FROM users where level = '$level'");
    }

    $message = array(
                     'word_id' => $id,
                     'm1' => $m1,
                     'm2' => $m2,
                     'm3' => $m3,
                     'm4' => $m4,
                     'm5' => $m5,
                     'm6' => $m6,
                     'm7' => $m7,
                     'level' => $level
                     );

     if (mysql_num_rows($result) > 0) {
        for($counter = 0; $counter<mysql_num_rows($result) ; $counter+=1000)    {
             $gcmRegIds=array();
             for($counter2=$counter ; $counter2<$counter+1000;$counter2++){
                 if($counter2<mysql_num_rows($result)){
                     $row = mysql_fetch_array($result);
                     $gcmRegIds[]=$row["Rid"];

                 }
            }

             $pushStatus = sendPushNotificationToGCM($gcmRegIds, $message);
             echo $pushStatus;

         }

         $time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"];
        echo "Process Time: {$time}";


    }else {
        $response["success"] = 0;
        $response["message"] = "No user found";
        echo json_encode($response);
    }    
    //echo $result;
} 
else {
    // required field is missing
    $response["success"] = 0;
    $response["message"] = "Required field(s) is missing";

    // echoing JSON response
    echo json_encode($response);
} 
?>
</body>
</html>

0 个答案:

没有答案