0

AWS SDK for PHP を使用しており、 waitUntilDBInstanceAvailable()で DB インスタンスが作成されるのを待つコマンドライン ツールがあります。

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

SDK が RDS をポーリングするたびにコールバック関数が呼び出されるように、コールバック関数を登録する方法はありますか?

何かのようなもの:

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

これにより、スクリプトがまだ待機中であり、恣意的にハングしなかったという事実について、ユーザーに何らかのフィードバックが提供されます。

ドキュメントは次のように述べています。

入力配列は、DescribeDBInstances 操作のパラメーターとウェイター固有の設定を使用します。

しかし、これらのウェイター固有の設定が何であるかを見つけることができませんでした.

4

2 に答える 2

1

カスタムの waiterを実装することで、探していることができます。残念ながら、既存のウェイターでコールバックをサポートするほど単純ではありませんが、探しているものを実装することはできます。

于 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 に答える