2013-02-10 3 views
-1

PHP 스크립트를 사용하여 Android 기기에 푸시 알림을 보내려고합니다. 매번 한 장치로 보내면 정상적으로 작동하지만 1000 개 이상의 장치가 있고 한 번에 모든 장치로 보내고 싶습니다. 루프를 사용해 보았지만 작동하지 않습니다.php에서 ajax를 사용하여 여러 요청 보내기

<script type="text/javascript"> 
      $(document).ready(function(){ 

      }); 

      function sendToAll(totalUsers){ 

       for(var i=0;i<totalUsers;i++) 
       { 
        sendPushNotification(i); 
       } 

      } 
      function sendPushNotification(id){ 
       var data = $('form#1').serialize(); 
       $('form#1').unbind('submit'); 
       $.ajax({ 
        url: "send_message.php", 
        type: 'GET', 
        data: data, 
        beforeSend: function() { 

        }, 
        success: function(data, textStatus, xhr) { 
          $('.txt_message').val(""); 
          $('.txt_excerpt').val("");  
        }, 
        error: function(xhr, textStatus, errorThrown) { 

        } 
       }); 
       return false; 
      } 
     </script> 

이것은 내 HTML 양식입니다. $ no_of_users 변수는 선택 쿼리에서 가져온 총 행 수, 즉 테이블에있는 총 사용자 수를 포함합니다.

<form id="1" name="" method="post" onsubmit="return sendToAll('<?php echo $no_of_users; ?>')"> 
           <label>Send Message to All the Users</label> 
           <div class="clear"></div> 
           <div class="send_container"> 
            <textarea rows="3" name="excerpt" cols="10" class="txt_excerpt" placeholder="Type excerpt here"></textarea> 
            <textarea rows="3" name="message" cols="25" class="txt_message" placeholder="Type message here"></textarea> 

            <input type="submit" class="send_btn" value="Send" onclick=""/> 
+0

수천 개의 아약스 요청을 동시에 시작할 수 없습니다. – Napolux

+0

그럼 내가 뭘해야하지? –

+0

요청에 대한 대기열을 생각해 볼 수 있습니다. – Napolux

답변

0

당신은 "동시에"모든를 만들기 위해 asyncronous 요청서를 사용해야합니다, 당신의 Ajax 호출에이 명령을 사용

async: true, 
+0

시도했지만 작동하지 않습니다. –

0

당신은 약 몇 가지 메시지를 추진하고자합니다. 서버에서 1000 개의 장치. 그리고 당신은 질문에서 제시 한 양식과 스크립트로 이것을 시작하고 싶습니다. 그러나 서버가 장치와 통신하는 방법에 대해서도 생각해야합니다. 서버가 클라이언트에 도달 할 수있는 방법이 있어야합니다.

한 가지 방법 - 예를 들어 N 초마다 새 메시지를 서버에 폴링하도록 클라이언트에게 지시합니다. 이렇게하면 불필요한 트래픽이 발생하고 서버가로드됩니다.

두 번째 방법 - 클라이언트에서 websocket을 사용하고 이에 대한 서버 측 지원이 필요합니다. 그것은 그렇게 보일 수있는 것처럼 사소하지 않을 수 있습니다

그리고 또 하나의 방법은 - 긴 폴링을 사용하는 것입니다.

어쨌든 - 장치는 서버로부터 푸시 메시지를받는 방법에 대해 지침을 받아야합니다.

관련 문제