0

PHPからGCMベースのプッシュ通知を送信するクラスを使用しています。私はhttps://www.phpclasses.org/package/8987-PHP-Send-push-notifications-to-Android-and-iOS-devices.htmlGCMプッシュ通知の送信がPHPで非常に時間がかかる

からこのクラスをダウンロードしたAndroidユーザーの数は3Kは現在、非常に長い時間がかかっているプッシュ通知を送信する交差したように、すべての物事が期待どおりに動作しますがされています。プッシュ通知を送信するには、2〜2時間半かかります。

ブラウザを閉じるためにページを更新できません。そうしないと、操作が中止されます。

スクリプトからプッシュ通知を送信する速度を上げる方法を教えてください。

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

をヨギヤンあなたは1でプッシュ通知1を送信している

+0

であなたのMobIDsをスライス? –

答えて

1

私はプッシュ通知を送信するため使用していたコードの重要な部分は、以下の提供です。だから時間がかかりすぎるのです。デバイスIDを使用してグループメッセージを送信できます。 thisのドキュメントを確認してください。

アンドロイドにプッシュ通知を送信するためのコードを以下に示します。同じようにiOSでもこれを行うことができます。

//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) 

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; 

} 

ことに注意してください:はリクエストごとに1000以上のデバイスIDを送信しないでください。 1000人以上のユーザーがいる場合。その後、あなたは1でpushnotification 1を送信しているサイズが1000未満

+0

ありがとうVinayak。それは魅力のように働く。私はあなたが提案したコードに " 'registration_idsは' =>配列($のREGISTRATION_ID)" に " 'registration_ids' => $ REGISTRATION_ID" を変更しなければなりませんでした。 –

関連する問題