Tutorial 1 : Web Development Introduction- PHP 7.0

안녕하세요, 이것은 Luepe에서 다시 Saju입니다 그리고 우린 방금 시작했습니다

PHP와 관련된 새로운 세션과 우리가 갈 것입니다 PHP와 관련된 몇 가지 주제를 통해 처음부터 추출 전문가 세션과이 튜토리얼에 대한 세션 PHP가 정확히 무엇인지와 관련하여 하나 하나 내에서, 어떤 종류 우리가 구문과 다른 몇 가지 측면을 어떻게 사용하는지 PHP로 사용하기 그리고 우리는 PHP 버전 XAMPP 70을 사용할 것입니다 현재 시장과 다른 여러 응용 프로그램에서 매우 인기있는 하나 이것에서 사용하고 있습니다 무엇보다도 PHP가 정확히 무엇인지 이해할 수 있습니다

모든 약 우리 모두는 PHP가 하이퍼 텍스트 전처리기로 불려 졌다는 것을 알고 있습니다 언어와 PHP 개발의 초기 단계에서 우리는 그것을 호출하고있다 개인 홈페이지로 PHP는 강력한 백엔드입니다 스크립팅 언어와 오늘날 여러 웹 응용 프로그램에서 널리 사용됩니다 그리고 그것은 오픈 소스 언어처럼 더 많이 작동합니다 나중에 몇몇 다른 민족들에 대한 Rasmus Lerdorf도 그것을 포함한다

PHP에 대한 기여도를 포함 시키십시오 왜 우리는 정확히 PHP를 사용하고 있습니까? 나는 다시 PHP를 오픈 소스 언어로 반복하고 있습니다 백 엔드 스크립팅 언어와 오늘날 PHP는 일부는 WordPress와 같은 가장 인기있는 콘텐츠 관리 시스템 Magento와 같은 Drupal 및 전자 상거래 애플리케이션 PHP는 Laravel, Symphony, Codelgniter, Yii 이러한 두 가지 모두 완전히 MVC 형식을 사용하고 있습니다 그들이 사용하고있는 스크립팅은 PHP입니다 또한 PHP는 또한 우리가 사용하고있는 내부 oops 개념은 아주 아주 아주 강력한 것

또한 다른 기능 중 일부는 PHP는 배우기가 쉽기 때문에 효율성이 높습니다 플랫폼 또는 플랫폼에 독립적으로 Windows에 설치할 수도 있습니다 아파치도 line-x에 설치하면 Mac에서도 사용할 수 있습니다 PHP는 대소 문자를 구분합니다 또한 섹션을보고하는 중에 오류가 발생합니다

우리가 가지고있는 가장 중요한 PHP 기능 중 일부는 우리가 우리의 응용 프로그램에서 PHP를 사용하고 있으며 나는 항상 이것을 사용하고있는 것과 같습니다 저는 2006 년부터 PHP를 사용하고 있습니다 응용 프로그램과 나는 또한 PHP를 기반으로 여러 API를 만들었습니다 그럼 PHP를 설치하는 방법 우리는 PHP를 설치하는 방법을 밟을 것입니다

Windows 환경의 Windows 환경에서 우리는 번들을 사용하고 있습니다 소프트웨어; 하나는 XAMPP이고 다른 하나는 WAMP입니다 우리는이 링크를 통해 갈 수 있습니다 apachefriendsorg/download

html 우리는 XAMPP를 다운로드 할 수 있습니다 버전이 64 비트 운영 체제 또는 32 비트 인 경우 운영 체제를 다운로드하면 WAMP도 다운로드 할 수 있습니다 유사한 XAMPP를 설치 한 후 어떻게 보이게 할 수 있습니까? 나처럼 이미 내 노트북에 내 PC에 XAMPP 설치 우리는 이미 XAMPP를 가지고 있으며 웹용 아파치를 가지고있다 서버와 이미 PHPini도 아파치 설정을 가지고 있습니다

다음 섹션에서는 어떻게 그리고 어떤 종류의 우리가 아파치와 PHPini에서하고있는 설정 우리가하고있는 가장 중요한 구성 중 일부 PHP는 내부에 MySQL 데이터베이스가 있습니다 FileZilla, Mercury Tomcat하지만 우리가 사용하는 기본 Apache와 MySQL입니다 자, 이제 이것이 우리가 시작하게 될 세션입니다 이 비디오에서 우리가 고려하고있는 튜토리얼 포인트는 12 개가 넘습니다 그리고 나는이 비디오를 여러 부분으로 나누고 있습니다 고마워, 고마워 내 다음 비디오 감사를 기다려

Web Development – Introduction to HTML, CSS and JAVASCRIPT Urdu Hindi

웹 개발 HTML, CSS에 대한 소개 과 자바 스크립트 우르두어 힌디어 채널 구독을 잊지 마세요 채널 구독을 잊지 마세요

채널 구독을 잊지 마세요 채널 구독을 잊지 마세요 채널 구독을 잊지 마세요 채널 구독을 잊지 마세요 채널 구독을 잊지 마세요

채널 구독을 잊지 마세요 채널 구독을 잊지 마세요 채널 구독을 잊지 마세요 채널 구독을 잊지 마세요 채널 구독을 잊지 마세요

채널 구독을 잊지 마세요 채널 구독을 잊지 마세요 채널 구독을 잊지 마세요 채널 구독을 잊지 마세요 채널 구독을 잊지 마세요

채널 구독을 잊지 마세요 채널 구독을 잊지 마세요 보고 주셔서 감사합니다

02 Introduction to laravel and MVC

wwwappcodder

com 그래서 당신이 거기서 검색 엔진에서 찾으면 Lara Bell이 무엇인지 laravel로 시작합시다 너는 이것과 아주 비슷한 정의를 찾을거야 Laravel은 MVC 아키텍처를 사용하는 PHP 프레임 워크입니다 이제 프레임 워크는 무엇입니까? 프레임 워크는 기본 시스템입니다 클래스 나 파일을 설치하는 것이 좋습니다

이제는 MVC가 무엇인지 알게 될 것입니다 아키텍처 아키텍처 란 특정 프레임 워크의 디자인 패턴입니까? 있었습니까? 그래서이 경우 laravel은 MVC의 디자인을 따르고 있습니다 MVC가 실제로 무엇을 부수는지 찾아 보겠습니다 M을 부셔 봅시다 M은 모델을 의미합니다

V는 뷰를 의미하고 C는 컨트롤러를 의미합니다이 클래스는 모델이 될 것입니다 보기가 될 클래스가됩니다 방법과 우리는 우리가하는 일에 따라 수업을 진행할 것입니다 메소드들

그래서 대부분의 것들은 우리가 프레임 워크에 대해 이야기 할 때마다 우리가 말할 때마다 클래스 녀석들로 구성됩니다 우리는 많은 것들을위한 많은 수업을 기억하고 있습니다 이것이 우리 P입니다 객체 지향 프로그래밍 괜찮아요 그래서 컨트롤러는 실제로 우리 수업뿐입니다

이제 모델을 조금 더 자세히 살펴 보겠습니다 모델이이 클래스의 클래스에 해당하는 데이터베이스를 다룬다 애플리케이션에 사용자가있는 경우 예제를 제공합니다 우리는 사용자 모델을 바로 만들 수 있습니다 우리는 사용자 모델과 관련이있는 모든 것을 처리하는 사용자 모델을 가질 수 있습니다

특정 사용자 테이블에 대해 데이터베이스에서 쿼리하여 사용자의 모델을 갖습니다 그리고 우리는 항상 우리가 가장 많이 사용하는 모델을 가질 때마다 사용자의 테이블을 가지고 있습니다 우리는 항상 특정 모델에 대한 테이블을 가지므로 사용자가 사용자의 모델 게시물 모델이 있고 게시물 테이블이 괜찮 으면 사용자 테이블이 있습니다 그렇다면 뷰에서 HTML을 다루는 뷰는 무엇입니까? 따라서 브라우저에서 응용 프로그램에 표시되는 모든 것을 얻었습니다 그것은 전망이 될 것입니다

그것은 표현이 될 것입니다 우리의 응용 프로그램의 모든 권리보기 컨트롤러 컨트롤러는 컨트롤러가보기 및 모델을 다루는 중매인입니다 알았어, 관제사는 현대가 말하는 모델에 대해 듣는다 사용자 표의 모든 성을 증명해야합니다 사용자의 성을 모두 알려 주시고 나에게내어 주시면됩니다

내가보기에 그것을 줄거야 그게 바로 컨트롤러가 아주 간단하게 말한 것입니다 이것은 뜨거운 laravel 무엇이며 이것은 MVC 괜찮아 약자, 그래서 거기 당신이 그것을 가지고있다 지켜봐 줘서 고마워 그리고 다음 강연에서 너를 다시 볼거야 조금 더 소화 할 수있을 때 실제로 실제로 찾아 낼 수있을 때 laravel이 정말로 코딩을 시작하려고하는 동안 우리가 laravel과 통화하는 것을 어떻게 알 수 있습니까? 그리고 어째서 MVC가 정말로 괜찮은지? 정말 고맙습니다 바라기를이 설명은 여기에 우리는 당신의 마음을 편안하게 만들어 모든 것을 더 명확하게 해줄 것입니다

고마워요, 다음 강의에서 만나요 당신

Introduction to AJAX – PHP – Lesson 42 – Telugu

https://edusoftdownloadsblogspot

com에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 https://edusoftdownloadsblogspot

com에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오

구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다

https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 https://edusoftdownloads

blogspotcom에서 예제를 다운로드하십시오 https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오

구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다

https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다

https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다

https://edusoftdownloadsblogspotcom에서 예제를 다운로드하십시오 구독 버튼을 클릭하면 최신 동영상을 볼 수 있습니다

How to do complex string comparisons: an introduction to regular expressions in PHP

복잡한 문자열 비교 방법 : 정규 표현식에 대한 소개 한 문자열 비교 방법을 알고 있습니다 다음과 같이 다른 사람에게 : 우리는 교체 방법을 알고 있습니다

하나의 문자열과 다른 문자열 다음과 같이 str_replace 함수를 사용합니다 그리고 우리는 하나의 문자열을 볼 수있는 방법을 안다 str_pos 함수를 사용하여 다른 것을 포함하고, 이렇게 : 모든 경우에 우리는 고정 된 문자열, 일치 또는 바꾸기 그러나 우리가 뭔가를해야한다면 어떻게 될까요? 좀 더 복잡해? 그것이 정규 표현식의 용도입니다 고정 된 문자열 대신에, 정규식은 문자 패턴

그래서 문자열의 일부와 일치 할 수 있습니다 따라서 고급으로 사용할 수 있습니다 일치 및 교체 예 : 일치 또는 교체 문자열에있는 숫자 만 또는 문자열 유효성 검사 이메일 주소가 포함되어 있는지 확인 등등 그래서 고정 된 것과 비교하는 대신 문자열, 이처럼 우리는 패턴과 비교합니다

PHP에서는 "두 개의 같음"대신 " 항등 연산자, 우리는 preg_match 기능 더 자세히 살펴 보겠습니다 나중에 비디오에서 세부 사항 그럼 간단하게 시작해 봅시다 문자 일치

대신에 고정 된 문자열, 우리는 정규 표현, 여기 있습니다 가능한 한 두 가지 사이에 정의되어 있습니다 슬래시 정규 표현식에서 문자, 리터럴 문자입니다 글자, 숫자 및 구두점 등등

그래서이 정규식과 일치한다면 이 문자열로 일치 항목을 얻습니다 문자열에 "a" "b"와 "c", 같은 정규식으로 이 문자열은 어떨까요? 음,이게 일치합니다 또한 문자열에 여전히 포함되어 있기 때문에 "a", "b", "c"순으로 나타납니다 이것은 일치하지 않습니다

왜냐하면 "bc"가 포함되어 있지만 포함하지 않습니다 "abc": 우리는 정규군을 찾고 있습니다 리터럴 "a", "b", "c"의 표현 숫자와 구두점에 대해서도 마찬가지입니다 그래서이 정규식, 이 문자열과 비교할 때 일치 두 개가 들어 있기 때문에 콜론 그 다음 세

지금까지는 매우 유사합니다 문자열을 고정 된 문자열과 비교하는 것 그러나 이것은 정규식 강력 해지기 시작하십시오 메타 문자는 특정 문자 유형 따라서 "백 슬래시 d"메타 문자 0에서 9 사이의 임의의 숫자와 일치합니다

"백 슬래시 w"또는 단어 문자 a에서 z까지 어떤 것이라도 일치 할 것입니다 대문자 또는 소문자, 0 ~ 9입니다 "백 슬래시 s"가 일치합니다 공백 문자 다른 것들도 있지만, 우리는 이것들을 보겠습니다

지금 당장 예를 들어,이 정규 표현식 "ab 백 슬래시 d"는 "ab"와 일치합니다 그 다음 숫자가 일치하므로 일치 할 것입니다 이 문자열 "abc backslash d"는이 문자열과 일치하지 않습니다

왜냐하면 우리는 "abc"를 찾고 있기 때문입니다 "백 슬래시 d 백 슬래시 d"는이 문자열과 일치합니다 우리는 둘과 셋이 있기 때문에, 및 백 슬래시 w, 백 슬래시 s, 백 슬래시 d 단어 문자 인 모든 문자와 일치합니다 일부 공백 문자, 그 다음 숫자, 그래서 그것은 중간 3 문자와 일치합니다 이 문자열의

정규 표현식을 재생하고 시험하기 위해, 웹 사이트 phpliveregexcom 정기적으로 사용해 볼 수있는 훌륭한 자료입니다 표현, 문자열 넣기, 가져 오기 결과는 PHP에서 나오므로, 사용 된 코드 포함 결과를 생성합니다 다음 동영상에서는 좀 더 살펴 보겠습니다 복잡한 정규 표현식

01 – Introduction to TDD php course – zeroToMasters

환영합니다이 TDD 과정에 오신 것을 환영합니다

이것은 알렉스이고 함께, 우리는 TDD를 마스터 할 것입니다 TDD가 무엇입니까? TDD는 코딩 방법론입니다 일반적인 코딩 방법은 다음과 같습니다 응용 프로그램 코드를 작성한 다음 몇 가지 테스트를 작성하십시오 TDD가 변경됩니다 TDD는 먼저 테스트를 작성한 다음 애플리케이션 코드를 작성하도록 강요합니다

그 이름이 어디에서 유래 했나요? 테스트 주도 개발 TDD 단계를 수행하면 더 나은 응용 프로그램 코드가 생성됩니다 TDD는 어떻게 할 수 있습니까? TDD에는 세 가지 주요 단계가 있습니다 빨간색, 녹색 및 리팩터링 빨간색이 출발점입니다 여기서해야 할 일은 실패한 테스트를 작성하는 것입니다 그것이 빨간색이라고 불리는 것입니다

그런 다음 실패한 테스트가 있으면 당신은 녹색 단계로 이동합니다 여기서 테스트를 통과시키기 위해 최소한의 코드를 작성해야합니다 얘들 아, 여기서 세계 최소를 명심하는 것이 매우 중요하다 이 단계에서 우리는 가장 놀라운 코드를 작성하려고하지 않습니다 우리가 원하는 것은 테스트를 녹색으로 바꾸는 것입니다

그런 다음이를 달성 한 후 리팩토러 단계로 이동합니다 여기에 최고의 코드를 작성할 수있는 기회가 있습니다 일단 우리가이 리펙터에 만족하면 우리는 빨간색 단계에서 다시 시작합니다 우리는 솔루션에 도달 할 때까지이 반복을 계속해서 반복 할 것입니다

이 과정에서 아주 기본적인 예제 인 FizzBuzz kata부터 시작하겠습니다 그런 다음 실제 사례로 이동합니다 TDD를 사용하여 API 통합을 수행하면이 동영상에 대한 모든 것입니다 지켜봐 줘서 고마워 아래에 귀하의 의견을 작성하십시오 다음에 보자

Introduction to ReactPHP and asynchronous PHP

자주 비동기 PHP에 대해 이야기 할 때 사람들은 PHP가 이런 종류의 작업에 적합한 도구가 아니라고 말했습니다 우리는 이미 Go 및 NodeJS를 사용하여 PHP 대신 사용하십시오

물론, 당신은 자유 롭습니다 비동기식 해결을 위해 잘 알려진 다른 언어를 사용하십시오 하지만 개발자로서 언어 자체가 케이스 하나 이상의 언어를 스택에 추가하려면 모든 종속성을 설정해야합니다 이 새로운 언어에 맞는 배포 시스템과 전체 생태계를 구성하십시오

이미 PHP 팀과 일하면서 새로운 것을 파헤치는 것이 훨씬 쉬울 것입니다 새 언어로 스택을 확장하는 대신 라이브러리를 사용하십시오 확실히 PHP가 비동기 작업을 해결하기 위해 만들어지지 않았다는 것은 사실입니다 더 많은 목표 대규모의 복잡한 시스템을 구축하는 데 사용할 수있는 프로그래밍 언어가 아니 었습니다 문제가 발생했을 때 자바 스크립트가없고 비동기적인 내용도 없었습니다

이제 완전히 다른 PHP를 사용하게되었습니다 대규모 복합 단지를 구축하기위한 프레임 워크가 있습니다 응용 프로그램과 PHP는 더 이상 요청 응답주기로 제한되지 않습니다 라이브 스트리밍, 다른 API, 다른 클라이언트와의 통합 장수명 콘솔 명령 및 직원이 작업해야하는 요구 사항 매우 빠릅니다 전통적인 동기식 환경에서 프로그램이 하나씩 실행됩니다

우리는 하나의 작업을 시작한 다음 작업이 완료 될 때까지 기다립니다 그때 만 다른 작업을 시작할 수 있습니다 상상하고 예측하기 쉽습니다 그러한 프로그램의 결과 요청 응답주기의 경우이 모델이 작동 할 수 있습니다

좋지만 복잡한 작업에 대해서는 동기식 접근 방식이 약간의 불편을 낳을 수 있습니다 세 가지 다른 데이터 소스와의 통합이 있다고 가정 해 보겠습니다 우리는 그들로부터 데이터를 수집하고,이 데이터를 처리하며 고객에게 돌아갑니다 에서 기존의 동기식 환경에서는 각 소스를 하나씩 요청하고 각각의 응답 시간은 1 초에서 3 초까지 걸립니다 데이터를 수집하기 위해 최소한 3 초를 기다려야합니다

에 비동기로 작업 할 때 우리는 하나의 요청을 기다리는 데 시간을 낭비하지 않습니다 다른 사람들을 시작하기 위해 완료되어야합니다 우리는 이러한 요청을 하나씩 시작합니다 그런 다음 나중에 작업을 마친 후 결과를 수집하기 위해 다시 방문합니다 모든 요청을 기다리는 대신 가장 느린 요청 만 기다려야합니다

그들 여기서 주요 아이디어는 계산이 엄청나게 빠릅니다 I / O와 비교 이는 API의 응답을 기다리는 동안, 데이터베이스 또는 파일 시스템에서 CPU가 수행하는 작업은 없습니다 뭔가하는 대신 유용한 비동기 방식은 논 블로킹 I / O의 아이디어를 사용합니다

우리는 시작한다 비 블로킹 작업이 완료 될 때까지 기다리지 않고 수행 할 수 있습니다 한 번 뭔가 재미있는 일은 우리가 그것에 반응 할 수 있다는 것입니다 우리는 무언가가 있음을 어떻게 알 수 있습니까? 일어난? 그 일이 끝났다고? 그 대답은 "사건들"입니다 이것은 우리가 "이벤트 중심 아키텍처"를 호출하십시오 우리는 특정 사건을 경청하고 그들이 일어날 때 우리는 그들에게 반응하라

우리의 경우 우리는 하나의 스레드에서 실행되는 PHP를 처리합니다 이벤트 큐가 필요한 비동기 프로그램을 만들 수 있어야합니다 이 대기열은 모든 비동기 응용 프로그램의 핵심입니다 우리가 이벤트 루프라고 부르는 것입니다 언제 새 이벤트가 발생하여 대기열에 추가됩니다

다음에 프로그램을 만들 때 thread는, 큐로부터 최초의 이벤트를 취해 아무것도 처리하지 않고, 적절한 이벤트 핸들러 핸들러가 완료되면 쓰레드는 다음으로 돌아 간다 대기열에 있으며 대기 중일 때 발생할 수있는 새 이벤트를 취합니다 그리고 모든 것이 무한 루프에서 발생합니다 어느 순간에 비동기 스레드는 두 가지 모드 중 하나 일 수 있습니다 : "디스패처 모드"와 다음에 처리해야하는 이벤트와 "처리기 모드"를 적절한 이벤트 핸들러

그러나 우리 코드를 제외한 모든 것은 병렬로 실행됩니다 우리의 이벤트 핸들러는 하나씩 실행됩니다 "비동기"는 "병렬"을 의미하지 않습니다 프로그램은 여러 개의 비 블로킹 작업을 시작하기 때문에 더 빠르게 실행됩니다 그들이 끝날 때까지 기다릴 필요가 없습니다

대신 우리는 언제 통보를 받습니까? 재미있는 일이 일어난다 예를 들어, 응답이 수신되고, 파일이 쓰여지고 나서 우리는에 반응 할 수있다 이번 행사 이제 PHP에 대해 이야기 해 보겠습니다 PHP에는 네이티브 도구가 없습니다

비동기 코드를 작성하십시오 우리는 낮은 수준의 물건을 가지고 있지만 그러한 것들은 없습니다 "이벤트 루프", "스트림"및 "약속"과 같은 높은 수준의 추상화 그래서 그러한 reactPHP와 같은 도구가 존재합니다 ReactPHP는 프레임 워크가 아닙니다

그것은 일련의 비동기 PHP를 작성하는 데 사용할 수있는 다양한 구성 요소 모든 구성 요소 PHP로 작성되었습니다 추가 확장 프로그램을 설치할 필요가 없습니다 ReactPHP로 작성된 비동기 코드는 JavaScript와 매우 유사합니다 자주 유일한 차이점은 PHP에서 이벤트 루프가 실행되지 않는다는 것입니다

장면 따라서 명시 적으로 생성하고 실행하는 것이 우리의 임무입니다 예를 들어, 여기에 매우 간단한 JavaScript 코드 : setTimeout () 함수로 일부 실행을 지연합니다 ReactPHP에서 "hello world"와 같은 코드를 출력 할 것입니다 이렇게 생겼어

해당 항목의 생성 및 실행을 제거하십시오 우리는 자바 스크립트에서 가지고있는 것과 거의 같은 코드를 얻는다 ReactPHP에서 비동기 프로세스의 결과를 얻으려면 약속의 개념입니다 나는 우리 중 대부분이 이미 자바 스크립트 세계 약속은 처음에는 알 수없는 자리 표시 자입니다

결과 우리는 수행하는데 약간의 시간이 필요한 작업이 있습니다 이 작업은에 대한 일부 값을 반환 할 수 있습니다 실패 할 수 있습니다 이 작업은 비동기 적으로 실행되므로 즉시 반환 값에 대한 액세스 대신 자리 표시자를 얻은 다음 정의합니다

이 자리 표시자를 실제 가치로 대체하면 어떤 행동을 취하십시오 이는 약속이 세 가지 별개의 상태에있을 수 있음을 의미합니다 이 약속을 되 돌린 연기 된 절차에 따라 "보류 중"상태 프로세스가 아직 실행 중임을 나타냅니다 "이행 됨"은 프로세스가 완료되었음을 의미하며 "거부 됨"은 프로세스가 실패했음을 의미합니다

소비자의 경우 코드는 수행원 약속을 통해 선언적 방식으로 코드를 작성할 수 있습니다 우리는 선언한다 일단 우리가 결과를 얻으면 우리는 어떤 행동을 취합니다 방법 then () 두 개의 인수를받습니다

첫 번째 콜백은 지연된 프로세스가 성공적으로 완료되면 두 번째 프로세스가 실패합니다 우리는 또한 체인 수 있습니다 결과를 처리하기 위해 다른 콜백을 제공합니다 예를 들어, 지연된 프로세스의 결과는 1이고, 우리는 2로 곱하고, 2를 전달합니다 두 번째 콜백에 인수로

다시 우리는 그것을 2 배로 곱한 다음 4 장 인쇄 스트림은 JavaScript에서와 똑같이 보입니다 그들은 우리가 많은 양의 데이터를 청크별로 처리합니다 예를 들어 우리가 몇 기가 바이트 크기의 큰 로그 파일을로드 할 필요가 없습니다 모든 것을 기억으로

대신 스트림을 통해이 파일을 읽을 수 있습니다 새로운 데이터 덩어리가 준비 될 때마다 알림을받습니다 로그의 경우 그것은 읽을 수있는 스트림 파일입니다 서버에 파일을 업로드하는 경우 디스크에 계속 기록하면 쓰기 가능한 스트림이됩니다 소켓 연결 판독 가능하고 기입 가능한 양방향 스트림은 양방향 스트림으로 표현 될 수있다

Streams API는 NodeJS와 매우 유사하게 보입니다 스트림에 무엇인가 쓸 수 있습니다 우리는 특정 사건을들을 수 있습니다 스트림 또한 이벤트 미터입니다 뭔가 흥미로운 것이 내부에서 일어나고, 그 물줄기는 그것에 반응 할 수 있습니다

예를 들어 우리는 "데이터"이벤트에 이벤트 핸들러를 추가 할 수 있습니다 '데이터'이벤트는 매번 발생합니다 읽을 수있는 스트림에는 읽을 수있는 새로운 데이터 청크가 있습니다 '닫기'이벤트는 스트림이 닫힐 때 발생합니다 예를 들어 전체 파일을 읽었습니다

이것들은 기본적인 저수준 추상화, 비동기 암호 ReactPHP 생태계는 또한 많은 다른 고급 구성 요소를 제공합니다 여기에는 저장소, 네트워크 통신, 대기열, 비동기 캐시 및 로그, 다른 스트림 등이 있습니다 코드 이전에 말했듯이 작성된 ReactPHP는 NodeJS와 매우 유사합니다 다음은 매우 간단합니다

모든 문자열에 대해 "hello world"라는 200 개의 응답을 반환하는 웹 서버 들어오는 요청 왼쪽에는 NodeJS 버전이 있으며 ReactPHP는 오른쪽으로 서버를 만들고 지정된 포트에 소켓을 연 다음 서버를 소켓에 연결하고 루프를 실행하십시오 매우 간단한 비동기 웹 서버 PHP로 작성되었습니다 NodeJS 버전과의 유일한 차이점은 우리가 명시 적으로 이벤트 루프를 작성하고 실행하십시오

나머지 코드는 같은 NodeJS로 작성된 비동기 코드가 그것보다 PHP 버전의 코드가 더 깨끗합니다 을 활용하려면 ReactPHP를 사용하면 애플리케이션을 처음부터 다시 작성할 필요가 없습니다 예를 들어 우리는 몇 가지 응용 프로그램을 가지고 컨트롤러에서 우리는 두 다른 출처 그런 다음이 데이터를 수집하고 페이지를 렌더링합니다

우리는 다시 쓸 수 있습니다 이 코드의 유일한 병목 부분 : 동기 HTTP 요청 우리는 이벤트 루프 그런 다음 약속을 반환하는 두 가지 요청을 보낸 다음이 때까지 기다립니다 해결하겠다는 약속

데이터를 수집하고 동기식 흐름을 계속합니다 우리 비동기 적으로 데이터를 수신하지만 페이지를 동 기적으로 렌더링합니다 만약 모든 것이 너무 좋아 보이기 때문에 모든 응용 프로그램을 작성해야합니다 비동기식으로? 그러나 위대한 힘으로 큰 책임이 있습니다 제일 어려운 문제는 통화를 차단하는 것입니다

우리의 코드는 단일 위협, 즉 장기 실행 작업이 전체 루프를 차단합니다 이벤트 루프가 지속적으로 실행되어야합니다 새로운 사건을 경청하고 그들에게 손을 대지 마라 하나의 처리기가 너무 오래 실행되어 나머지 응용 프로그램이 대기합니다 불행히도 대부분의 네이티브 함수와 타사 라이브러리는 처음에는 전통적인 동기 런타임에서 작동하도록 작성되었으며 흐름

모든 네트워크 통신이 루프를 차단할 수 있습니다 요청이 진행되는 동안 우리는 기다렸다 이것이 PDO와 모든 라이브러리를 사용할 수없는 이유입니다 그것 위에 세웠다 PDO는 네트워크 요청을 사용합니다 대신 우리는 스트림 기반 고객

file_exists ()와 같은 모든 기존 파일 시스템 함수를 사용할 수는 없습니다 또는 file_get_contents () 대신 특수 비동기 어댑터를 사용해야합니다 또한 타사 라이브러리를 사용할 때 어떤 기능이 중요한지 알아야합니다 내부에서 사용됩니다

루프를 차단할 수 있는지 여부 비동기 코드에서 통화 차단을 대체하는 대신 다음 규칙을 사용할 수 있습니다 우리가 약속을 사용하는 단일 한 가치를받습니다 우리가 어떤 사람들과 일할 때 스트림을 사용하는 일부 데이터를 지속적으로 푸시하거나 수신하는 API입니다 언제 완전히 비동기식 애플리케이션 작성하기 우리가 직면 할 수있는 문제들

사람들은 종종 PHP에서 불평합니다 어 메모리 누수가 발생합니다 우리는 정말 멋진 최신 버전의 모든 첫 번째 가비지 컬렉터 및 메모리가 누출되지 않습니다 그리고 그것도 문제가 아닙니다 PHP

NodeJS에서 동일한 메모리 문제가 발생할 수 있습니다 긴 메모리 관리 살아있는 프로세스는 개발자의 책임입니다 그것은 당신의 직업입니다 개발자는 메모리를 최적화, 축소 및 제거 할 수 있습니다 장기 실행 스크립트에서 데이터베이스 연결은 시간 종료로 닫힐 수 있습니다

당신은 일종의 구현해야합니다 필요한 경우 점검하고 다시 연결하십시오 오류에 특별한주의를 기울이십시오 손질 전통적으로 각 클라이언트마다 별도의 스레드가 있습니다

와 새로운 요청이있을 때마다 우리는 전체 애플리케이션을 부트 스트랩하고 일부를 실행한다 코드 어떤 것이 실패하면 현재 요청에만 영향을 미칩니다 다른 모든 연결 가능하게 살아있어 비동기 서버로 무언가가 실패 할 때 응용 프로그램이 충돌하고 모든 클라이언트의 연결이 끊어집니다 왜냐하면 비동기 적으로 발생하면 유동의 거동을 예측하기가 어렵습니다

그리고 물론 die () calll을 사용하면 전체 응용 프로그램에서 var_dump () 및 die 중지하면 모든 클라이언트 또는 프로세스가 파괴됩니다 그리고 그 모든 것을 기억하십시오 동기식 응용 프로그램의 클라이언트 또는 프로세스에 일부 공유 전역이 있습니다 상태 그리고 그들은 같은 기억을 공유합니다

따라서 비동기 PHP가 존재하며 라이브입니다 네트워크 통신인지 또는 네트워크 통신인지 여부를 일부 I / O 기다리는 경우 파일 시스템을 차단하고 방해하는 경우 ReactPHP 사용을 고려하십시오 비동기식 접근 방식이 크게 향상 될 수 있습니다 PHP는 당신은 그것에 대해 생각하곤했습니다 스택을 복잡하게 만들 필요가 없습니다

다른 언어로 비동기 작업을 해결할 수 있습니다 아마도 PHP가 할 수 있습니다 쉽게 다룰 수 있습니다 그리고 ReactPHP는 비동기 코드를 작성하는 데 도움을 줄 수 있습니다 그곳에 마법과 관련이 없으며 추가적인 확장이 필요하지 않습니다

그러나 기대하지 마라 ReactPHP를 프로젝트에 추가하면 모든 것이 작동하기 시작합니다 2 배 빠릅니다 이런 식으로 작동하지 않습니다 모든 것을 얻으려면 비동기 코드의 전체 개념을 이해해야합니다

그것으로부터 이익을 얻습니다