Async는 비동기식을 의미하며, 이는 프로세스가 동기적이지 않음을 의미합니다. 비동기식은 코드의 병렬 실행을 허용합니다. 이는 코드 조각을 서로 독립적으로 개별적으로 실행할 수 있음을 의미합니다. 이것을 일반적으로 비동기 프로세스라고 하며 PHP에서도 마찬가지입니다. 우리는 PHP에 Async 모델을 가지고 있어 동시에 다중 작업을 실행할 수 있습니다. 코드 실행 속도가 빨라지고 성능도 향상됩니다.
광고 이 카테고리에서 인기 있는 강좌 PHP 개발자 - 전문 분야 | 8개 코스 시리즈 | 3가지 모의고사무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
구문:
PHP에서는 Spatie 패키지를 사용하여 비동기 기능을 사용할 수 있습니다. 이 패키지를 사용하면 비동기 호출을 처리하고 프로그램의 병렬 실행을 제공하는 데 도움이 되는 풀을 만들 수 있습니다. 더 잘 설명하기 위해 구문을 살펴보겠습니다. 아래를 참조하세요.
//package to be used use Spatie\Async\Pool; $mypool = Pool::create(); $mypool[] = async() { //your logic goes here })->then() { // your logic });
먼저 여기서 'SpatieAsyncPool' 패키지를 가져와야 합니다. 그런 다음 비동기 작업을 처리할 풀을 생성합니다. 그 안에 'async' 키워드가 뒤따라 병렬로 실행하려는 전체 논리와 코드 조각을 작성합니다. 여기에는 콜백 메서드인 'then' 메서드가 있습니다. 이 안에 우리만의 논리를 작성할 수도 있습니다. 모든 작업이 끝나면 'then' 블록의 지정된 출력에 대해 더 많은 작업을 작성할 수 있습니다.
이제 우리는 비동기 기능을 통해 여러 작업을 실행할 수 있다는 것을 알았습니다. PHP의 동기 프로그래밍에 대해 이야기하면 항상 동일한 순서로 출력됩니다. 1부터 10까지의 숫자를 인쇄한다고 가정해 보겠습니다. 따라서 동기 코드를 사용하여 이 논리를 작성하면 항상 오름차순으로 표시됩니다. 그러나 여기서 동일한 논리에 대해 비동기 코드를 사용하려고 하면 숫자 순서가 확실하지 않습니다. 아래의 몇 가지 예를 통해 이에 대해 더 자세히 논의하겠습니다. PHP에서 비동기 코드를 작성하기 위해 'spatie'라는 패키지를 사용했습니다. 이는 또한 비동기 코드에서 오류와 예외를 더 잘 처리할 수 있게 해줍니다. 먼저 이 패키지를 사용하여 간단한 로직을 작성하는 방법을 살펴보겠습니다. 그럼 나중에 비동기 코드와 함께 사용할 수 있는 더 많은 메소드에 대해 자세히 논의하겠습니다.
예:
use Spatie\Async
cmd:
composer require spatie
예:
$mypool = Pool::create();
풀 객체에 어떤 이름이라도 붙일 수 있습니다. 또한 'Async' 내부에 있는 Pool 클래스를 가져오는 것을 잊지 마세요. 아래를 참조하세요.
예:
use Spatie\Async\Pool;
예:
demoAsync(function () { // // }) ->then(function ($output) { // // })
위 코드에서는 비동기 함수를 생성하고 해당 함수의 콜백 메서드인 'then'을 사용하고 있습니다. 이 'then' 함수는 위 코드 블록이 성공적으로 실행될 때 작동하는 역할을 담당합니다. 그렇지 않은 경우에는 다른 Async 방법을 사용하여 해당 사례를 처리해야 합니다.
이제 코드 실행 중에 발생할 수 있는 오류, 예외, 시간 초과를 처리하는 몇 가지 방법을 살펴보겠습니다. 이 패키지는 코드의 비동기 블록 내에서 이를 처리할 수 있는 다양한 방법을 제공합니다. 각각에 대해 자세히 논의해 보겠습니다. 아래를 참조하세요.
코드 블록이 예상 기간 내에 작업을 수행하지 못하거나 오류가 발생하면 메서드가 실행됩니다. 이 메소드를 작성하는 구문은 다음과 같습니다.
예:
timeout(function () { // when timeout reached. })
코드 블록이 성공적으로 실행되고 결과에 대해 추가 작업을 수행해야 하는 경우 메서드가 실행됩니다. 이 메소드를 작성하는 구문은 다음과 같습니다.
예:
then(function ($result) { // operation after result })
이 메서드는 코드 블록에서 예외가 발생하면 실행됩니다. 이 메서드 내에서 이를 처리하고 논리를 수행할 수 있습니다. 이 메소드를 작성하는 구문은 아래와 같습니다.
예:
catch(function ($exp) { // exception can be handle here. })
Following are the examples given below:
In this example, we are implementing async with the method and printing two messages to keep it simple for beginners.
Code:
use Spatie\Async\Pool; $mypool = Pool::create(); $mypool ->asyncDemo(function () { print("async called here !!") }) ->then(function () { print("then called after result !!") } ;
Output:
In this example, we are using all the methods of async from the Spatie\Async\ package. Those are catch, then, and timeout. We keep it simple for now without too much logic.
Code:
use Spatie\Async\Pool; $mypool = Pool::create(); $mypool ->asyncDemo(function () { print("async called here !!") print("async called here !!") }) ->then(function ($output) { print("print called here !!") }) ->catch(function ($exception) { print("catch called here !!") }) ->timeout(function () { print("timeout called here !!") }) ;
Output:
By using async in our code, we can enable parallel execution of tasks in our program. Also, they increase the performance of the code because the piece of code is independent of each other. But using StopIteration in situations where the data from the previous block of code is dependent on the current can lead to data loss and inconsistency.
위 내용은 PHP 비동기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!