ホームページ  >  記事  >  バックエンド開発  >  php はモノのインターネットを実現できますか?

php はモノのインターネットを実現できますか?

(*-*)浩
(*-*)浩オリジナル
2019-10-19 10:07:516870ブラウズ

PHP はモノのインターネット サーバーには適していませんか?

php はモノのインターネットを実現できますか?

従来の考え方では、PHP は IoT サーバーには適していないと言われ、Java またはノードに変更するように求められることがよくあります。他の言語、はい、はい、伝統的な意味での PHP は、とても不自由なため、IoT サーバーを作成するのは確かに困難です。もちろん、これはまったくできないという意味ではありません。 (推奨される学習: PHP ビデオ チュートリアル )

たとえば、TCP サーバーを実装する場合は、次の原則に従ってコードを記述する必要がある場合があります:

for ($i = 0;$i <= 1;$i++){
    $pid = pcntl_fork();
    if($pid){
        if($i == 0){
            $server = stream_socket_server("tcp://127.0.0.1:9501", $errno, $errstr, STREAM_SERVER_BIND);
        }else if($i == 1){
            $tickTime = time()+3600;
            while (1){
                usleep(1);
                if($tickTime == time()){
                    //do my tick func
                }
            }
        }
    }}

上記のコードの意味は、あるプロセスでTCPサーバーを作成し、別のプロセスで無限ループで時刻検出を行うことでタイマーロジックを実現することに相当します。

これは非常に面倒に見えますが、一般にプログラミングの基盤が弱い PHPer にとって、維持するのは非常に困難です。もちろん、現時点では、「Workerman はないのではないか? はい、確かに Workerman があります。Workerman は、上記のコード原則を高度にカプセル化し、コード ロジックの実装に集中できるようにする PHP マルチプロセス フレームワークです。したがって、 、PHP がモノのインターネットを行うというのは、実際には誤りであると言われています。

もちろん、現時点では Go 言語にはコルーチンがある、という人もいるかもしれませんが、Workerman を使用してデータベース呼び出しをブロックすると、効率が非常に悪くなり、高い同時実行性を達成するのが難しくなります。しかし実際には、この欠点を補うために可能な限り複数のプロセス、つまりヒープ マシンを使用することができます。もちろん、本当にすべてのペニーを費やしたいのであれば、それは問題ではありません。この時点で、

Swoole4.x のコルーチンである殺人兵器を思いつくことができます。

以上がphp はモノのインターネットを実現できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。