r-soy Posted August 17, 2015 Share Posted August 17, 2015 (edited) I have a sending page, it php page. this page I used to send text to users in database In fact, In my database I have 27969 users when I send a text only go for 17106 only where reaming users why this php page didn't sent to all 27969 please help me ---------------------- this my code : <?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", "AIzaSyB3x8jNi11zyqUX_ShdRC65TwK1IG2XJ1");//saeed $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> Edited August 17, 2015 by Ch0cu3r Quote Link to comment https://forums.phpfreaks.com/topic/297831-it-is-not-delivered-all-users/ Share on other sites More sharing options...
scootstah Posted August 17, 2015 Share Posted August 17, 2015 Google will give you an error response if a message could not be sent. You should try logging your $result from the CURL request for later analysis. Quote Link to comment https://forums.phpfreaks.com/topic/297831-it-is-not-delivered-all-users/#findComment-1519090 Share on other sites More sharing options...
r-soy Posted August 17, 2015 Author Share Posted August 17, 2015 I didn't got it please can expaline more Quote Link to comment https://forums.phpfreaks.com/topic/297831-it-is-not-delivered-all-users/#findComment-1519091 Share on other sites More sharing options...
ginerjm Posted August 17, 2015 Share Posted August 17, 2015 It is ALWAYS good programming practice to check the results of operations that can impact your own process. If you run a query you should always check the result of it before trying to use the query results (check the PHP manual for examples on how to use the query function). If you open an external file you should check that the open call actually worked (see the manual again for 'fopen' for examples). That way you avoid running into problems later on in your scripts. In this case when you make those calls to Google (an external source!) you should be checking the response to make sure it worked. And when it doesn't work you should know how the source is returning any important info that can help you (check your API instructions/manual). That is what scootstah is trying to tell you. Other things that you can do are to turn on PHP error checking during your development cycle (see my signature) and when really stuck look at the php error log file on your server for any messages that may be posted there (google 'php error_log'). Quote Link to comment https://forums.phpfreaks.com/topic/297831-it-is-not-delivered-all-users/#findComment-1519096 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.