PocketMine-MPでマルチスレッド処理をする!Thread/AsyncTaskhaniokasaiのドキドキlinuxubuntuとかnetwalkerとかandroidとか、あとminecraftもホームページMCPE鯖HP鯖代行運営netwalkerリポジトリMiRmMCPE2017年4月6日木曜日PocketMine-MPでマルチスレッド処理をする!Thread/AsyncTaskこんにちは、haniokasaiです。誰も、PocketMine-MPのマルチスレッドについてまとめた人がいなかったのでまとめてみます。イントロphpで書かれたpocketmineは重いです。それは、保守のかんたんさと引き換えにそうなっているのでしょうが、特にcurlで外部のapiにアクセスをするものを使うときには全体の処理を遅らせてしまうことでしょう。そもそも、PMMPのbinには、pthreadが同梱されていますが、単純に使うことはどうやらできないようです。そこでどうしようかなぁと思ってたら、記憶がうろ覚えなのですが、pocketmine\threadを使うと良いと、おぎわらが教えてくれました。彼は私の夢で何故か一度登場したことがあります。マルチスレッドについては、検索すればいい説明が読めます。プラグイン例https://github.com/haniokasai/PocketMine-Thread/Threadthreadは、返り値の伴わないスレッド処理ができます。serverlistの情報送信のような一方的な作業に使うことができます。thread_ex1("Hello");で、仕事を生成します。()内には、引き渡したい変数をかけます。(引き渡し先は、_construct($data)です。定義してあげると、run内で利用できます。すると、_construct、runの関数の順に実行されます。run内で、phpで書いた関数はスレッドクラス外から呼び出せないです。AsyncTaskこれは動作完了時に、任意の作業をさせることができます。webに接続するタイプのログインプラグインであっても、通信が完了した時にログインを完了させれば、他の人がラグを感じずに済むわけです。onRunが完了すれば、onCompletionが実行されるでしょう。$this->getServer()として見なせば、pmmpが操作できます。イントロの逆ってアウトロなんですね!以上、マルチスレッドの方法について、まとめてみました。サンプルプラグインを触れば、何ができるかよりわかると思います。ある人の鯖の軽量化のためだけに考えたのですが、もうその人は鯖をやめてしまい、自分も開かないことをその人に進めたので、墓場(github)に埋もれていました。拾い上げ、記事にしました。これで少しでも使う人が増えたらいいなと思います。今回はざっとしか書いてないですけど、反応を見て続編を書きたいです。パケット読み方を頑張る編#3こんにちは、皆に愛されるはにおかさいです。人生に迷いすぎて精神崩壊しそうです。今回は、パケットの読み方を頑張ります。日本語の情報が少ないpocketmine-mpのプラグイン。私が興味をもったプラグインを紹介していきたいと思います。Pharファイルをwebで作る!解凍する!こんにちは、haniokasaiです。pharをいちいちdevtoolsで作ったり、展開したりするのが面倒な方に便利なツールを用意しました。var...nginxでライブストリーミング!nginx-rtmp-module生配信サーバーを構築してみたかったのですが、nginxのエクステンションでできることがわかって構築しました。