Pmx2Fbx Web 開発秘話その5
Unityとか3Dとか
こんにちはヾ(・ω・。)ノタ-!!! サイトのアクセスがちょっと増えて、にっこりしているローデンです。そういえば、このサイトは「ローデンの独り言 ver 6.1」となっていますが、ver 2.0に相当する頃(2003年頃)が最盛期で、35人/日 (ユニークユーザのみカウント) ぐらいアクセスがありました。 "最盛期でそれだけって、今のご時世どれだけ少ないのよ!ってか、そんな昔からあったの?!" …というツッコミは置いといて、その記録も近いうちに更新されるかもしれませんね。 さて、第五弾となる今回はいつもの「工夫」とか「苦労」というより、ただの昔話です。 Pmx2Fbx Web のオリジナルのanydream/Pmx2Fbxは exe 形式のWindowsアプリケーションです。 Pmx2Fbx Web も、大雑把に言えばオリジナルのアレンジなので、その仕組みは同じになっています。ただ、Webアプリなので、exe を実行するのはユーザーではなくサーバー (rouden.jpを動かしてるコンピュータ) になっています。 そこで問題になるのが、複数のユーザが同時(全く同じタイミングに)アクセスしたときに、どうするか……ということでした。 v0.1 の時はその辺りがすごくいい加減で、同時アクセスがあったときは片方がエラーで失敗するようになっていました。不親切な動作ですが、そもそもアクセス数が少なかった
(今も少ない)ので、実際は問題にはなりませんでした。 v0.3 の頃にはもう少し"マシ"な仕組みとして、同時アクセスのときは、順番待ちになるようにしました。サーバはリクエストの順番でfbxを生成するので、同時アクセスのユーザで順番待ちしてるときは、サーバの処理に時間がかかったように見えます。 この方法は欠点があって、サーバ内部で実行する "exeのPmx2Fbx" にバグがあって終了しなかったときに、順番待ちのユーザが永遠に待たされ続ける可能性があります。なので、この内部処理が30秒経っても終了しない場合は、バグと判断してエラーにするようにしていました。いわゆる タイムアウト というやつです。 これで完璧…と思いきや、この"30秒"がバグの原因になっていました。 勘の良い方は気づいているかもしれません。この仕組では、すごく大きなpmxで処理に時間がかかって30秒経過した場合、エラーになってfbxを出力できません……! ということで、v0.5 では順番待ちシステムを廃止し、同時アクセス時は "exeのPmx2Fbx" を同時に実行できるように変更することになりました。 といった感じで、v0.5にしてようやく同時アクセス問題は解決できたのでした。 たぶん続く!
最終更新: 2023/05/07 16:49