远程方关闭后重新打开与PHP的TCP连接的正确方法?

远程方关闭后重新打开与PHP的TCP连接的正确方法?,php,ios,tcp,apple-push-notifications,Php,Ios,Tcp,Apple Push Notifications,在远程关闭TCP套接字连接后重新打开该连接时遇到问题。具体来说,这是针对Apple Push Notification service的—当Apple遇到来自您的设备令牌,该令牌与删除您的应用程序的设备配对时,他们会关闭其Push网关的安全TCP套接字。出现此问题时,我需要立即重新打开此连接(或启动一个新连接),以便继续向仍安装了应用程序的其他用户发送通知。我有一些代码,我试图用它来解决这个问题,但它冻结了我的整个Apache服务器,我必须手动重新启动才能让事情再次运行,我不知道为什么。下面是我

在远程关闭TCP套接字连接后重新打开该连接时遇到问题。具体来说,这是针对Apple Push Notification service的—当Apple遇到来自您的设备令牌,该令牌与删除您的应用程序的设备配对时,他们会关闭其Push网关的安全TCP套接字。出现此问题时,我需要立即重新打开此连接(或启动一个新连接),以便继续向仍安装了应用程序的其他用户发送通知。我有一些代码,我试图用它来解决这个问题,但它冻结了我的整个Apache服务器,我必须手动重新启动才能让事情再次运行,我不知道为什么。下面是我试图用它重新打开Apple的套接字的代码:

if($error_response == "InvalidToken"){
    $results .= "\ntried to restart";
    fclose($fp);
    usleep(20000);
    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck_real.pem');
    stream_context_set_option($ctx, 'ssl', 'passphrase', '****');
    $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
}

有点相关;当设备删除你的应用程序时,你不会收到通知,这样你就可以防止发送无效令牌了吗?您是否确切知道冻结服务器的代码?我的意思是,具体在哪个页面上?是的,你可以单独设置一个页面,比如respond_to_deleted_tokens.php,苹果的服务器使用删除你的应用程序的设备的令牌调用该页面。但我不想完全依赖于此,因为可能会有其他原因导致通知无法通过的情况(更不用说我还没有实现这样的页面,所以我已经删除了未捕获的令牌)。导致冻结的确切行是尝试再次打开连接的行-以$fp=。。。