Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从SQS接收的消息数_Php_Amazon Web Services_Amazon Sqs - Fatal编程技术网

Php 从SQS接收的消息数

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 ))

使用Amazon的SQS和他们的PHPSDK,我可以接收消息并删除它们,但是如果没有收到消息,我会在尝试循环消息时出错。如果有办法在我的foreach语句之前检查消息的数量,我将避免任何错误。显然,我可以抑制错误,一切都会顺利进行,但我不希望这样

$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 ...

}