2016-06-25 3 views
0

У меня есть следующий скрипт php, который запрашивает базу данных mysql для отправки сообщения. Я хочу отправить переменную «сообщение» в циклы каждые 1000 строк таблицы базы данных. Ниже приведен код, может ли кто-нибудь найти ошибку? Сам скрипт php не вызывает никаких ошибок, однако он не отправляет сообщение каждые 1000 строк. Вместо этого он выполняется полностью по всем строкам таблицы базы данных, что приводит к ошибке обмена сообщениями от GCM.php не корректно работает через пользователей sql

<?php 
session_start(); 
include_once 'connect.php'; 

    function send_notification($con,$registatoin_ids, $message) { 
    $url = 'https://android.googleapis.com/gcm/send'; 

    // prep the bundle 
    $msg = array 
    (
'message' => "message", 
'title'  => '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/999;$i++){ 

    $query=$con->query("SELECT gcm_regid from gcm_users LIMIT   
    $current_num,999"); 

foreach($query as $data) { 
$row[]=$data["gcm_regid"]; 
} 

    $pushStatus = send_notification($con,$row, $message); 
    $current_num+=999; 
    } 
    }else if(isset($_POST["logout"])){ 

    if(session_destroy()) // Destroying All Sessions 
{ 
header("Location: login.php"); // Redirecting To Home Page 
} 
} 

?> 

ответ

0

$row[] всегда добавляет, но $ row никогда не очищается.

$row[]=array(); // clear array 
foreach($query as $data) { 
$row[]=$data["gcm_regid"]; 
} 
+0

Thnx для вашего ответа, я попробовал, но сценарий по-прежнему отправляется во все строки сразу. GCM возвращает сообщение: количество сообщений навалом (1784) превышает максимально допустимое (1000), поэтому я могу только предположить, что мессаж отправляется сразу во все строки таблицы. – qwertyg

Смежные вопросы