Php 当设备被禁用时,AWS Sns发布将自动终止?

Php 当设备被禁用时,AWS Sns发布将自动终止?,php,amazon-web-services,notifications,publish,amazon-sns,Php,Amazon Web Services,Notifications,Publish,Amazon Sns,当我尝试调用$sns->publish PHP时,我遇到了一个奇怪的错误-它永远不会返回,我不确定它是否会悄无声息地消失,但我无法捕获异常或获取返回代码。 当令牌端点的设备在SNS控制台中似乎已经被禁用时,我能够跟踪到这种情况。它在初始调用时被禁用,我假设由于GCM返回的错误,令牌无效。 我做错了什么?我怎样才能防止这个问题?我不想检查每个端点是否已启用,因为我可能会将其推到1000个端点中的10个。然而,我肯定想继续执行我的推循环。 有什么想法吗?AWS团队论坛似乎毫无用处,从AWS团队成员最

当我尝试调用$sns->publish PHP时,我遇到了一个奇怪的错误-它永远不会返回,我不确定它是否会悄无声息地消失,但我无法捕获异常或获取返回代码。 当令牌端点的设备在SNS控制台中似乎已经被禁用时,我能够跟踪到这种情况。它在初始调用时被禁用,我假设由于GCM返回的错误,令牌无效。 我做错了什么?我怎样才能防止这个问题?我不想检查每个端点是否已启用,因为我可能会将其推到1000个端点中的10个。然而,我肯定想继续执行我的推循环。
有什么想法吗?AWS团队论坛似乎毫无用处,从AWS团队成员最初回复请求代码到现在已经有好几个星期没有响应了。

您可以在发送推送通知之前检查端点是否已禁用-

$arn_code = ARN_CODE_HERE;
$arn_arr = array("EndpointArn"=>$arn_code);
$endpointAtt = $sns->getEndpointAttributes($arn_arr);
//print_r($endpointAtt);
if($endpointAtt != 'failed' && $endpointAtt['Attributes']['Enabled'] != 'false')
{
     ....PUBLISH CODE HERE....
}
它不会停止执行。
希望它能对您有所帮助。

正如我所说的:我不想检查每个端点是否已启用,因为我可能会将其推到1000分之10。那么这是不可能的。我所做的就是每次从用户那里获取设备令牌并在AWS上注册/创建该令牌的端点。不关心它是否已经在那里注册,并且发送参数始终为Enabled=>true。因此,如果之前禁用了该端点,则将再次启用该端点。所以我从来没有遇到过端点在发送SNS时被禁用的情况。它不应该只是死掉:-它应该以某种形式的失败返回。我知道,我也面临着同样的问题。但现在找到了另一个解决方案,为每个$sns请求和响应添加“try-catch”代码。所以它不会在执行中死亡。您将在异常消息中得到确切的问题。也尝试过了。代码刚刚消失,甚至不是例外:-