我正在使用AWS SDK for PHP,并且有一个命令行工具,等待使用waitUntilDBInstanceAvailable()创建数据库实例:
$this->rdsClient->waitUntilDBInstanceAvailable([
'DBInstanceIdentifier' => 'test'
]);
有没有办法注册一个回调函数,所以每次SDK轮询RDS时,都会调用我的回调函数?
类似的东西:
$this->rdsClient->waitUntilDBInstanceAvailable([
'DBInstanceIdentifier' => 'test',
'CallbackFunction' => function() {
echo '.';
}
]);
这会给用户一些关于脚本仍在等待的事情的反馈,并且没有任意挂起。
医生说:
输入数组使用DescribeDBInstances操作的参数和服务员特定的设置
但我无法找出这些服务员特定设置的内容。
答案 0 :(得分:1)
您可以通过实施custom waiter来完成您所需要的工作。不幸的是,它不像支持现有服务员的回调那么简单,但你仍然可以实现你正在寻找的东西。
答案 1 :(得分:1)
有一个page specifically about waiters in the AWS SDK for PHP User Guide。在该页面上,它讨论了如何将事件监听器与服务员一起使用。您需要直接与服务员对象进行交互。
// 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.