Managing visibility timeout in Amazon SQS with AWS SDK for PHP Version 3 - AWS SDK for PHP
Services or capabilities described in AWS documentation might vary by Region. To see the differences applicable to the AWS European Sovereign Cloud Region, see the AWS European Sovereign Cloud User Guide.

Managing visibility timeout in Amazon SQS with AWS SDK for PHP Version 3

A visibility timeout is a period of time during which Amazon SQS prevents other consuming components from receiving and processing a message. To learn more, see Visibility Timeout.

The following example shows how to:

All the example code for the AWS SDK for PHP is available here on GitHub.

Credentials

Before running the example code, configure your AWS credentials, as described in Authenticating with AWS using AWS SDK for PHP Version 3. Then import the AWS SDK for PHP, as described in Installing the AWS SDK for PHP Version 3.

Change the visibility timeout of multiple messages

Imports

require 'vendor/autoload.php'; use Aws\Exception\AwsException; use Aws\Sqs\SqsClient;

Sample Code

$queueUrl = "QUEUE_URL"; $client = new SqsClient([ 'profile' => 'default', 'region' => 'us-west-2', 'version' => '2012-11-05' ]); try { $result = $client->receiveMessage(array( 'AttributeNames' => ['SentTimestamp'], 'MaxNumberOfMessages' => 10, 'MessageAttributeNames' => ['All'], 'QueueUrl' => $queueUrl, // REQUIRED )); $messages = $result->get('Messages'); if ($messages != null) { $entries = array(); for ($i = 0; $i < count($messages); $i++) { $entries[] = [ 'Id' => 'unique_is_msg' . $i, // REQUIRED 'ReceiptHandle' => $messages[$i]['ReceiptHandle'], // REQUIRED 'VisibilityTimeout' => 3600 ]; } $result = $client->changeMessageVisibilityBatch([ 'Entries' => $entries, 'QueueUrl' => $queueUrl ]); var_dump($result); } else { echo "No messages in queue \n"; } } catch (AwsException $e) { // output error message if fails error_log($e->getMessage()); }