ホームページ  >  記事  >  バックエンド開発  >  php はモノのインターネットに使用されるのでしょうか?

php はモノのインターネットに使用されるのでしょうか?

(*-*)浩
(*-*)浩オリジナル
2019-09-10 10:36:033879ブラウズ

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

php はモノのインターネットに使用されるのでしょうか?

従来の考え方では、PHP は IoT サーバーには適していないと言われることがよくあります。他の言語に切り替えましょうはい、伝統的な意味での PHP は非常に機能不全であるため、モノのインターネット サーバーを作成するのが確かに難しいことは事実です。完全に行うことはできません。

たとえば、TCP サーバーを実装する場合は、次の原則に基づいてコードを記述する必要がある場合があります: (推奨される学習: PHP プログラミングの初心者から熟練度まで )

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

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

これは非常に面倒に見えます。また、プログラミングの基礎が一般的に弱い PHPer にとって、維持するのは非常に困難です。

もちろん、現時点では、「Workerman はないのではないか」という人もいるでしょう。はい、確かに Workerman は存在します。Workerman は上記のコード原則を高度にカプセル化しており、 は実装に集中するのに役立ちますコード ロジックは PHP マルチプロセス フレームワークであるため、PHP が常にモノのインターネットを実行するとは限りません。

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

もちろん、本当にすべてのペニーを費やしたいのであれば、それは問題ではありません。現時点では、キラー武器を思いつくことができます。これは、Swoole4.x のコルーチンです。

アクター モデル

アクターとは何ですか? 簡単に言うと、アクターは高度に抽象化された同時実行モデルです。各アクター インスタンスのメモリ空間は、相互に連携することで、ユーザーのプログラミングとメンテナンスの難しさを軽減します。

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

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