500 많은 푸시 알림을 보낼 때 오류, PHP?

user1145643

다음 코드를 사용하여 내 iOS 앱에서 수집하는 장치 ID가 포함 된 데이터베이스를 순환합니다. 약 300 개 정도의 알림에서 내 서버가 500 오류로 멈 춥니 다. 이 작업을 더 효율적으로 수행하는 방법에 대한 아이디어가 있습니까? 나는 공유 서버에 있습니다. 내 유일한 옵션은 전용 시스템에 이것을 설정하는 것입니까?

php.ini에는 다음과 같은 세트가 있습니다.

set_time_limit = 999999999
max_execution_time = 999999999
memory_limit = 512M

다음은 코드입니다.

if(isset($_POST['pushNotify'])){ /// PROCESS PUSH NOTIFICATION TO LAST 120 DAYS OF ACTIVE USERS
$message = stripslashes(strip_tags(trim($_POST['message'])));

mysql_connect("URL", "USER", "PASS") or die(mysql_error());
mysql_select_db("DATABASE") or die(mysql_error());
$cutoff = time() - (60*60*24*120);
$result = mysql_query("SELECT * FROM devices WHERE timestamp > '$cutoff' ORDER BY timestamp DESC");
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', '../certs/distck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', 'password');
$fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);

while($row = mysql_fetch_array($result))
  {
  if(strlen(trim($row['deviceid']))>25){
    $devid = str_replace("-", "", trim($row['deviceid']));
    $payload = '{
                    "aps" : 

                        { "alert" : "'.$message.'",
                          "badge" : 0,
                          "sound" : "bingbong.aiff"
                        } 
                }';


    $msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $devid)) . pack      ("n",strlen($payload)) . $payload;
    if(!@fwrite($fp, $msg)){
        @fclose($fp);
        $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
        @fwrite($fp, $msg);
        }
    }
    @fclose($fp);

} /// END PUSH NOTIFY
새긴 ​​금

@ 표기법을 제거하는 것이 좋습니다. ! @fwrite 는 피해야합니다. fwrite 는 실패하거나 연결이 끊어진 경우 FALSE를 반환합니다. 알림 : Apple은 오류가 발생하는 즉시 연결을 끊습니다.

문제 :

  1. fwrite가 실패하면 올바른 생각이 있습니다. 소켓을 닫고 다시 열고 다시 시도하십시오. 단, 잘못된 토큰을 보내면 Apple이 연결을 닫을 수 있다는 점을 제외하고는 여러 가지 이유로 이러한 경우가 많습니다. 따라서 동일한 토큰을 다시 시도하지 말고 대신 다음 토큰으로 이동해야합니다.

  2. fwrite가 두 번째로 실패하면 (재시도 조건에서) 오류를 포착하지 못하며 그 시점에서 500 오류를 설명 할 수있는 소켓이 열려 있지 않습니다. 계속 진행하기 전에 N 번 재 시도하도록 논리를 다시 작성하는 것이 좋습니다.

바이너리 인터페이스 (지금 Apple이 권장하는 방식)를 사용하면 실제로 Apple에서 정확한 오류 알림을받을 수 있습니다. 여기에서 자세한 내용을 읽을 수 있습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이메일 알림을 보낼 때 500 내부 서버 오류

분류에서Dev

등록 된 Android 장치로 푸시 알림을 보낼 때 PNS 오류

분류에서Dev

curl 명령을 사용하여 푸시 알림을 보낼 때 잘못된 등록 오류

분류에서Dev

AJAX 게시물을 ASP로 보낼 때 500 (내부 서버 오류)

분류에서Dev

Codeigniter에서 이메일을 보낼 때 오류 500 수신

분류에서Dev

알림을 보낼 수 없음 [오류 : 80300002] (HMS 코어 푸시 키트)-웹 앱

분류에서Dev

너무 많은 메시지를 보낼 때 서버 / 클라이언트 오류

분류에서Dev

OneSignal REST API를 사용하여 푸시 알림을 보내지 만 500 오류가 발생합니다.

분류에서Dev

PHP를 사용하여 iOS에 푸시 알림을 보낼 수 없습니다.

분류에서Dev

(500) 내부 서버 오류-API를 사용하여 웹 요청을 보낼 때

분류에서Dev

Mandrill을 사용하여 이메일을 보낼 때 오류 (php)

분류에서Dev

알림 양식 PHP 스크립트를 보낼 때 메시지에 새 줄을 추가하는 방법은 무엇입니까?

분류에서Dev

응답을 다시 보낼 때 NodeJS 오류

분류에서Dev

FCM을 통해 푸시 알림을 보낼 때 iOS 기기 토큰을 사용해야하는 경우

분류에서Dev

PyFCM을 사용하여 푸시 알림을 보낼 때 '인증서 확인 실패'

분류에서Dev

Swift with Parse : appDelegate에 푸시 알림 지원을 추가 할 때 오류 발생

분류에서Dev

null이 아니거나 비어있는 목록을 보낼 때 RestyGWT + Jersey 오류 500

분류에서Dev

Javascript를 사용하여 ID 배열에 알림을 보낼 때 Facebook 액세스 토큰 오류

분류에서Dev

Active Directory 인증을 사용하여 GitLab에 푸시하려고 할 때 500 오류

분류에서Dev

배포 오류를 보여주는 django 푸시 알림

분류에서Dev

PHP | API URL에 JSON POST를 보낼 때 오류 발생

분류에서Dev

AJAX에서 PHP로 변수를 보낼 때 오류

분류에서Dev

알림을 보내려고 할 때 Null 오류

분류에서Dev

SwiftUI-사용자가 푸시 알림을 열 때 특정보기 열기

분류에서Dev

메시지를 보낼 때 Windows 메시지 오류 1722

분류에서Dev

사용자가 firebase에 새 메시지를 게시 할 때 푸시 알림을 보내는 방법은 무엇입니까?

분류에서Dev

curl을 사용하여 푸시 알림을 보내는 PHP 스크립트

분류에서Dev

.apk를 내보낼 때 Joda 시간 및 ProGuard 오류

분류에서Dev

결과를 CSV로 내보낼 때 시스템 개체 오류

Related 관련 기사

  1. 1

    이메일 알림을 보낼 때 500 내부 서버 오류

  2. 2

    등록 된 Android 장치로 푸시 알림을 보낼 때 PNS 오류

  3. 3

    curl 명령을 사용하여 푸시 알림을 보낼 때 잘못된 등록 오류

  4. 4

    AJAX 게시물을 ASP로 보낼 때 500 (내부 서버 오류)

  5. 5

    Codeigniter에서 이메일을 보낼 때 오류 500 수신

  6. 6

    알림을 보낼 수 없음 [오류 : 80300002] (HMS 코어 푸시 키트)-웹 앱

  7. 7

    너무 많은 메시지를 보낼 때 서버 / 클라이언트 오류

  8. 8

    OneSignal REST API를 사용하여 푸시 알림을 보내지 만 500 오류가 발생합니다.

  9. 9

    PHP를 사용하여 iOS에 푸시 알림을 보낼 수 없습니다.

  10. 10

    (500) 내부 서버 오류-API를 사용하여 웹 요청을 보낼 때

  11. 11

    Mandrill을 사용하여 이메일을 보낼 때 오류 (php)

  12. 12

    알림 양식 PHP 스크립트를 보낼 때 메시지에 새 줄을 추가하는 방법은 무엇입니까?

  13. 13

    응답을 다시 보낼 때 NodeJS 오류

  14. 14

    FCM을 통해 푸시 알림을 보낼 때 iOS 기기 토큰을 사용해야하는 경우

  15. 15

    PyFCM을 사용하여 푸시 알림을 보낼 때 '인증서 확인 실패'

  16. 16

    Swift with Parse : appDelegate에 푸시 알림 지원을 추가 할 때 오류 발생

  17. 17

    null이 아니거나 비어있는 목록을 보낼 때 RestyGWT + Jersey 오류 500

  18. 18

    Javascript를 사용하여 ID 배열에 알림을 보낼 때 Facebook 액세스 토큰 오류

  19. 19

    Active Directory 인증을 사용하여 GitLab에 푸시하려고 할 때 500 오류

  20. 20

    배포 오류를 보여주는 django 푸시 알림

  21. 21

    PHP | API URL에 JSON POST를 보낼 때 오류 발생

  22. 22

    AJAX에서 PHP로 변수를 보낼 때 오류

  23. 23

    알림을 보내려고 할 때 Null 오류

  24. 24

    SwiftUI-사용자가 푸시 알림을 열 때 특정보기 열기

  25. 25

    메시지를 보낼 때 Windows 메시지 오류 1722

  26. 26

    사용자가 firebase에 새 메시지를 게시 할 때 푸시 알림을 보내는 방법은 무엇입니까?

  27. 27

    curl을 사용하여 푸시 알림을 보내는 PHP 스크립트

  28. 28

    .apk를 내보낼 때 Joda 시간 및 ProGuard 오류

  29. 29

    결과를 CSV로 내보낼 때 시스템 개체 오류

뜨겁다태그

보관