0

Ich verwende eine Klasse, um GCM-basierte Push-Benachrichtigung von PHP zu senden. Ich habe diese Klasse von https://www.phpclasses.org/package/8987-PHP-Send-push-notifications-to-Android-and-iOS-devices.htmlGCM Push-Benachrichtigung senden dauert sehr lange in PHP

heruntergeladen Alle Dinge funktionieren wie erwartet, aber wie die Anzahl der Android-Nutzer hat 3K überschritten jetzt senden Push-Benachrichtigung dauert sehr lange Zeit. Es dauert ungefähr 2 bis 2 1/2 Stunden, um Push Notification zu senden.

Und ich kann die Seite nicht aktualisieren, um sogar den Browser zu schließen, sonst wird der Vorgang abgebrochen.

Wie kann ich die Geschwindigkeit des Sendens von Push-Benachrichtigungen aus meinem Skript erhöhen?

Der wichtige Teil des Codes, die ich für das Senden von Push Notification bin mit unter geben:

if (isset($_POST['sendmessage']) && !empty($_POST['sendmessage'])) { 
    $errorvalid = array(); 
    $success = TRUE; 
    $requiredFields = array("subject_notify" => "Please Enter Notify Subject.", "subject_main" => "Please Enter Main Subject.", "msg" => "Please Enter Message"); 
     foreach ($requiredFields as $fld => $msg) { 
      $v = $_POST[$fld]; 
      if (empty($v)) { 
        $success = false; 
        $errorvalid[$fld] = $msg; 
      } else { 
        $errorvalid[$fld] = ''; 
        $$fld = $v; 
      } 
     } 
    if($success) 
    { 
     $get_result = mysql_query("SELECT ps_mobile_id, ps_service_type FROM push_service", $con); 

     $row_result = mysql_fetch_assoc($get_result); 
     $totalRows_row_result = mysql_num_rows($get_result); 

     echo "Total Records: ".$totalRows_row_result; 
     echo "<br/>"; 

     //Set parameters to hold time out error 
     set_time_limit(0); 
     error_reporting(E_ALL); 
     //ob_implicit_flush(TRUE); 
     //ob_end_flush(); 

     if($totalRows_row_result > 0) { 
       $push = new pushmessage(); 
       do { 
         $MobID = $row_result['ps_mobile_id']; 
         $MobType = $row_result['ps_service_type']; 

         echo "Mobile ID: ".$MobID; 
         echo "<br/>"; 

         if($MobType == 1) 
         { 
           //Android 
           $params = array("pushtype"=>"android", "msg"=>$msg, "registration_id"=>$MobID, "subject_main"=>$subject_main, "subject_notify"=>$subject_notify,); 
           $rtn = $push->sendMessage($params); 
           //Push the message 
           $rtn = $push->sendMessage($params); 
         } 
         else 
         { 
           //iOS 
           //$params = array("pushtype"=>"android", "msg"=>$msg, "registration_id"=>$MobID, //"subject_main"=>$subject_main, "subject_notify"=>$subject_notify,); 
           //$rtn = $push->sendMessage($params); 
           //Push the message 
           //$rtn = $push->sendMessage($params); 
         } 

         echo "<br/>"; 
         print_r($rtn); 
         echo "<br/>"; 

         //ob_flush(); //Push data to Browser 

       }while ($row_result = mysql_fetch_assoc($get_result)); 
       //header("Location: index.php"); 
       echo "<h2>Completed Sending Pusht Message</h2>"; 
       echo "<br/><br/>"; 
       echo "Rediricting.... Please wait...."; 
       echo "<br/><br/>"; 
       echo '<meta http-equiv="refresh" content="3;url=http://mypresence.in/pushtibooks/pushmsg/" />'; 
     } 
     else 
     { 
       echo "NO Data"; 
     } 
    }  
} 

TIA

Yogi Yang

+0

Senden Sie Pushnotification eins nach dem anderen? –

Antwort

1

Sie senden Push-Benachrichtigung eins nach dem anderen. Deshalb braucht es zu viel Zeit. Sie können Gruppennachrichten mit der Geräte-ID senden. Überprüfen Sie this Dokumentation.

Verwenden Sie den folgenden Code zum Senden einer Push-Benachrichtigung an Android. So wie Sie dies auch auf iOS tun können.

//For andriod 
    $get_result = mysql_query("SELECT ps_mobile_id FROM push_service where ps_service_type = 1", $con); 

    // $row_result = mysql_fetch_assoc($get_result); 
    $totalRows_row_result = mysql_num_rows($get_result); 

    $MobIDs=array(); 

     while($row = mysql_fetch_assoc($get_result)){ 
      $MobIDs[] = $row; 
     } 
    $params = array("pushtype"=>"android", "msg"=>$msg, "subject_main"=>$subject_main, "subject_notify"=>$subject_notify,); 
    $rtn = $push->sendMessageAndroid($MobIDs, $params) 

und sendMessageAndroid($registration_id, $params)

public $androidAuthKey = "Android Auth Key Here"; 
public $iosApnsCert = "./certification/xxxxx.pem"; 

/** 
* For Android GCM 
* $params["msg"] : Expected Message For GCM 
*/ 
private function sendMessageAndroid($registration_id, $params) { 
    $this->androidAuthKey = "Android Auth Key Here";//Auth Key Herer 

    ## data is different from what your app is programmed 
    $data = array( 
      'registration_ids' => array($registration_id), 
      'data' => array( 
          'gcm_msg' => $params["msg"] 
         ) 
      ); 


    $headers = array( 
    "Content-Type:application/json", 
    "Authorization:key=".$this->androidAuthKey 
    ); 


    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, "https://android.googleapis.com/gcm/send"); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); 
    $result = curl_exec($ch); 
    //result sample {"multicast_id":6375780939476727795,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1390531659626943%6cd617fcf9fd7ecd"}]} 
    //http://developer.android.com/google/gcm/http.html // refer error code 
    curl_close($ch); 

    $rtn["code"] = "000";//means result OK 
    $rtn["msg"] = "OK"; 
    $rtn["result"] = $result; 
    return $rtn; 

} 

Bitte beachten Sie, dass: nicht mehr als 1000 Geräte-ID pro Anfrage Sie senden. Wenn Sie mehr als 1000 Benutzer haben. dann schneiden Sie Ihre MobIDs mit einer Größe von weniger als 1000

+0

Danke Vinayak. Es wirkt wie ein Zauber. Ich musste "'registration_ids' => array ($ registration_id)" zu "'registration_ids' => $ registration_id" in dem von Ihnen vorgeschlagenen Code ändern. –

Verwandte Themen