首頁  >  文章  >  後端開發  >  物聯網會用php嗎

物聯網會用php嗎

(*-*)浩
(*-*)浩原創
2019-09-10 10:36:033880瀏覽

PHP不適合做物聯網服務端嗎?

物聯網會用php嗎

在傳統的思維中,常有人告訴你,php不適合用來做物聯網服務端,讓你換java,node,go等其他語言,是的,沒錯傳統意義上的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的協程。

Actor模型

什麼是Actor,簡單來說,Actor就是高度抽象化的並發模型,每個Actor實例的記憶體空間都是互相隔離的,用於降低使用者編程與維護難度。

以上是物聯網會用php嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn