私はAmphpライブラリに基づいて、実行するタスクの一覧を外部サーバーにポーリングし、それらのタスクを実行する、長時間実行しているスクリプトを作成しています。可変バックオフタイマーを使用して外部サーバーをポーリングする長期実行スクリプト?
サーバからの応答には、スクリプトが次の要求を行うときを制御するバックオフタイマーがあります。
私は非同期プログラミングに新しいので、私が試しているものは動作していません。
\ Amp \ Pause(1000)を持つ\ Amp \ repeat()を作成して、各リピートが1秒間停止するようにしました。
は、ここに私のテストコードです:私は、各繰り返しで、テスト()関数は、エコーの後に1秒のために一時停止するというものであったが起こることが予想代わりにエコーが100ms毎に実行された何
function test() {
// http request goes here...
echo 'server request '.microtime(true).PHP_EOL;
// based on the server request, change the pause time
yield new \Amp\Pause(1000);
}
Amp\execute(function() {
\Amp\onSignal(SIGINT, function() {
\Amp\stop();
});
\Amp\repeat(100, function() {
yield from test();
});
});
(繰り返し時間)。
これまで私はwhileループとusleep()でこれを達成しましたが、usleep()はこれをブロックしているので目的を破りました。
私はgithub masterブランチのPHP 7.0とAmphpを使用しています。
これは、私のコードが機能しない理由を説明しています。これはサーバーのポーリングをお勧めしますか? –
@AshleyHood最後の要求の終了から次の要求の開始までの間に100msの遅延を持たせたい場合は、yesとします。 – bwoebi