PHP는 IoT 서버에 적합하지 않나요?
전통적인 사고에서는 PHP가 IoT 서버에 적합하지 않다고 말하고 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!