jMeter, Locust, k6, ... 負荷試験ツールは色々ありますが、どれも PHP でシナリオを書くことができません。 PHP のコードは PHP でシナリオも書いてしまった方が一貫性があって良いですよね? PHP 8.1 から Fiber が入ったことで、 PHP でも非同期・並行的な処理が簡単に実装出来るようになりました。 PHP によるシナリオツール、 ないなら作ろう精神 で、自作することにしました。
Fiber ままで並行処理を作るのは大変なので、今回は amphp を使って簡単に distributed なシステムを構築します。
今回は何故自作したのか、どのように並行処理を実装したのかを紹介します。