0

我正在使用适用于 PHP 的 AWS 开发工具包,并且有一个命令行工具等待使用waitUntilDBInstanceAvailable()创建数据库实例:

$this->rdsClient->waitUntilDBInstanceAvailable([
    'DBInstanceIdentifier' => 'test'
]);

有没有办法注册一个回调函数,让SDK每次轮询RDS时,都会调用我的回调函数?

就像是:

$this->rdsClient->waitUntilDBInstanceAvailable([
    'DBInstanceIdentifier' => 'test',
    'CallbackFunction'     => function() {
        echo '.';
    }
]);

这会给用户一些关于脚本仍在等待并且没有任意挂起这一事实的反馈。

医生说:

输入数组使用 DescribeDBInstances 操作的参数和特定于服务员的设置

但我不知道这些服务员的具体设置是什么。

4

2 回答 2

1

您可以通过实现自定义服务员来做您正在寻找的事情。不幸的是,它并不像支持现有服务员的回调那么简单,但您仍然可以实现您正在寻找的内容。

于 2013-09-17T14:52:44.087 回答
1

AWS SDK for PHP 用户指南中有一个专门关于服务员的页面。在该页面上,它讨论了如何将事件侦听器与服务员一起使用。您需要直接与服务员对象进行交互。

// Get and configure the waiter object
$waiter = $client->getWaiter('BucketExists')
    ->setConfig(array('Bucket' => 'my-bucket'))
    ->setInterval(10)
    ->setMaxAttempts(3);

// Get the event dispatcher and register listeners for both events emitted by the waiter
$dispatcher = $waiter->getEventDispatcher();
$dispatcher->addListener('waiter.before_attempt', function () {
    echo "Checking if the wait condition has been met…\n";
});
$dispatcher->addListener('waiter.before_wait', function () use ($waiter) {
    $interval = $waiter->getInterval();
    echo "Sleeping for {$interval} seconds…\n";
});

$waiter->wait();

// Also Licensed under version 2.0 of the Apache License.
于 2013-09-17T14:53:19.083 回答