PHP 이벤트 루프 : 비동기 프로그래밍을위한 무기
코어 포인트
PHP 이벤트 루프는 스케줄러의 이벤트 나 메시지를 기다리는 데 사용되는 프로그래밍 구조, 특히 비동기 작업을 처리하는 데 사용되는 프로그래밍 구조입니다.
고드름 고드름은 이벤트 루프를 고려하는 구성 요소 라이브러리입니다. 간단한 예를 살펴 보겠습니다 :
<code class="language-javascript">function fitToScreen(selector) { var element = document.querySelector(selector); var width = element.offsetWidth; var height = element.offsetHeight; var top = "-" + (height / 2) + "px"; var left = "-" + (width / 2) + "px"; var ratio = getRatio(width, height); setStyles(element, { "position": "absolute", "left": "50%", "top": "50%", "margin": top + " 0 0 " + left, "transform": "scale(" + ratio + ", " + ratio + ")" }); } function getRatio(width, height) { return Math.min( document.body.offsetWidth / width, document.body.offsetHeight / height ); } function setStyles(element, styles) { for (var key in styles) { if (element.style.hasOwnProperty(key)) { element.style[key] = styles[key]; } } } fitToScreen(".welcome-screen");</code>이것은 icicleio/icicle 버전 0.8.0 를 사용하고 있습니다
이것은 icicleio/dns 버전 0.5.0
setTimeout(function() {
console.log("inside the timeout");
}, 1);
console.log("outside the timeout");
생성기를 사용하여 동기 코드와 비슷한 비동기 코드를 쓰는 것을 더 쉽게 만들 수 있습니다. 약속 및 이벤트 루프와 결합하면 이와 같은 우수한 비 차단 코드를 생성합니다!
reactphp
Reactphp에는 유사한 이벤트 루프 구현이 있지만 모든 흥미로운 생성기 컨텐츠가 없습니다. 이것은 React/Event-Loop 버전 0.4.1
를 사용하고 있습니다Reactphp는 고드름보다 성숙하고 더 넓은 범위의 구성 요소를 가지고 있습니다. 아이 시클은 여전히 Reactphp가 제공하는 모든 기능과 경쟁하기 위해 갈 길이 멀다. 그러나 개발자는 좋은 진전을 이루고 있습니다!
<code class="language-javascript">function fitToScreen(selector) { var element = document.querySelector(selector); var width = element.offsetWidth; var height = element.offsetHeight; var top = "-" + (height / 2) + "px"; var left = "-" + (width / 2) + "px"; var ratio = getRatio(width, height); setStyles(element, { "position": "absolute", "left": "50%", "top": "50%", "margin": top + " 0 0 " + left, "transform": "scale(" + ratio + ", " + ratio + ")" }); } function getRatio(width, height) { return Math.min( document.body.offsetWidth / width, document.body.offsetHeight / height ); } function setStyles(element, styles) { for (var key in styles) { if (element.style.hasOwnProperty(key)) { element.style[key] = styles[key]; } } } fitToScreen(".welcome-screen");</code>
결론
이벤트 루프에서의 오류 처리는 동기화 된 PHP 코드의 오류 처리보다 더 복잡 할 수 있습니다. 작업이 비동기식으로 실행되므로 오류가 즉시 잡히지 않을 수 있습니다. 대신, 일반적으로 오류가 발생할 때 호출되는 콜백 함수를 제공해야합니다.
PHP의 쓰레기 수집은 이벤트 루프와 독립적으로 작동합니다. 그러나 이벤트 루프는 모든 활성 작업에 대한 참조를 유지하기 때문에 이러한 작업은 완료 후에 만 수집됩니다. 즉, 이벤트 루프 코드에서 메모리 누출을 피하기 위해주의해야합니다.
위 내용은 PHP에서 이벤트 루프에 대한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!