そこでPHPで非同期処理のうまいやり方をいろいろ考えてたら、面白そうなのができたかも?
今はやりの Lambda を参考に(パクリ?)Web API で PHP の function を呼び出す仕組みを作ってみた。
うまく行くところと、限界(制限)もありますが、簡単な関数を作ってベンチマークしてみたら、凄い性能が出てしまった(mod_php比較)
テスト環境は、さくらインターネットのVPS(メモリ1G、CPU2個)
比較対象、mod_php バージョン5.6
単純なhello worldを3万回
18.274 seconds
1641.68 [#/sec]
・PHPで非同期処理
なんちゃって Lambda 環境で実行されたと同じ環境を作って3万回実行結果
PHP 5.6:約7秒
PHP 7.0:約0.5秒
実は今回試したなんちゃって Lambda はステートロスではないです。
Lambdaみたいにステートロスをやろうとすると難しい・・・というか元インフラエンジニアとしては、明らかに性能的に不利とわかってる仕組みには抵抗ありなんで
そのため下手なプログラムを作ると、簡単にメモリーリークします。
PHPというよりC言語で書くようなイメージでプログラム作れば大丈夫(じゃまずいかww)
◯Lambdaを参考に、簡単にPHPで書けるようにしてみた。
function hellow($arr) {
return "hellow_world";
}
というfunctionを作るだけで Web API からよびだせるようにしてみました。