Php 从SQS接收的消息数
使用Amazon的SQS和他们的PHPSDK,我可以接收消息并删除它们,但是如果没有收到消息,我会在尝试循环消息时出错。如果有办法在我的foreach语句之前检查消息的数量,我将避免任何错误。显然,我可以抑制错误,一切都会顺利进行,但我不希望这样Php 从SQS接收的消息数,php,amazon-web-services,amazon-sqs,Php,Amazon Web Services,Amazon Sqs,使用Amazon的SQS和他们的PHPSDK,我可以接收消息并删除它们,但是如果没有收到消息,我会在尝试循环消息时出错。如果有办法在我的foreach语句之前检查消息的数量,我将避免任何错误。显然,我可以抑制错误,一切都会顺利进行,但我不希望这样 $result = $sqs->receiveMessage(array( 'QueueUrl' => SQS_QUEUE, 'MaxNumberOfMessages' => 10 ))
$result = $sqs->receiveMessage(array(
'QueueUrl' => SQS_QUEUE,
'MaxNumberOfMessages' => 10 ));
foreach ($result->get('Messages') as $message) {
if (process_sqs($message['Body'])) {
$deletemessage = $sqs->deleteMessage(array(
'QueueUrl' => SQS_QUEUE,
'ReceiptHandle' => $message['ReceiptHandle']));
}
}
基本上,在填充$result之后,我想查询接收到的消息数,如果超过0,则转到foreach语句
我知道我可以在receiveMessage之前使用GetQueueAttributes来估计队列中的消息数量,但我认为没有必要发出额外的请求,同时也不能保证我将实际收到任何消息
谢谢在使用count()函数循环数组之前,您可以使用PHP对数组进行计数:
$messages = $result->get('Messages');
if (count($messages) > 0) {
foreach ...
}