라이브러리

[PHP] EvLoop::child - 현재 이벤트 루프와 연관된 EvChild 객체를 생성합니다.




EvLoop::child

EvLoop::child는 PHP의 EvLoop 클래스의 메소드 중 하나로, 이벤트 루프에서 자식 프로세스를 관리하는 데 사용됩니다. 이 메소드는 이벤트 루프에서 자식 프로세스를 생성하고 관리하는 데 도움이 됩니다.

EvLoop::child 사용법

EvLoop::child 메소드는 두 개의 인자를 받습니다.

* `$pid`: 자식 프로세스의 PID를 반환합니다.
* `$stdin`: 자식 프로세스의 표준 입력을 관리하는 데 사용됩니다.
* `$stdout`: 자식 프로세스의 표준 출력을 관리하는 데 사용됩니다.
* `$stderr`: 자식 프로세스의 표준 에러를 관리하는 데 사용됩니다.

예제

다음 예제는 EvLoop::child 메소드를 사용하여 자식 프로세스를 생성하고 관리하는 방법을 보여줍니다.

#hostingforum.kr
php

<?php



// EvLoop 클래스를 사용하여 이벤트 루프를 생성합니다.

$loop = new EvLoop();



// 자식 프로세스를 생성합니다.

$stdin = fopen('php://stdin', 'r');

$stdout = fopen('php://stdout', 'w');

$stderr = fopen('php://stderr', 'w');



$pid = pcntl_fork();



if ($pid == -1) {

    // fork 실패시

    die('fork failed');

} elseif ($pid) {

    // 부모 프로세스

    $stdin = new EvChild($loop, $pid, $stdin, $stdout, $stderr);

    $stdin->setCallback('childCallback');

    $stdin->enable();

    $loop->loop();

} else {

    // 자식 프로세스

    // 자식 프로세스에서 실행할 코드를 여기에 작성합니다.

    echo "자식 프로세스입니다.
";

    sleep(2);

    echo "자식 프로세스가 종료됩니다.
";

    exit(0);

}



function childCallback(EvChild $child) {

    // 자식 프로세스가 종료되었을 때 호출되는 콜백 함수입니다.

    echo "자식 프로세스가 종료되었습니다.
";

}



?>



이 예제에서는 EvLoop::child 메소드를 사용하여 자식 프로세스를 생성하고 관리하는 방법을 보여줍니다. 자식 프로세스는 부모 프로세스에서 fork() 시스템 호출을 사용하여 생성됩니다. 부모 프로세스는 자식 프로세스의 표준 입력, 출력, 에러를 관리하는 데 사용되는 EvChild 객체를 생성하고, 자식 프로세스가 종료되었을 때 호출되는 콜백 함수를 설정합니다. 자식 프로세스는 부모 프로세스에서 fork() 시스템 호출을 사용하여 생성되었으므로, 자식 프로세스는 부모 프로세스의 자원을 공유합니다.

EvChild

EvChild 클래스는 이벤트 루프에서 자식 프로세스를 관리하는 데 사용되는 클래스입니다. EvChild 객체는 자식 프로세스의 표준 입력, 출력, 에러를 관리하는 데 사용됩니다.

EvChild 사용법

EvChild 클래스는 다음 메소드를 제공합니다.

* `__construct(EvLoop $loop, int $pid, resource $stdin, resource $stdout, resource $stderr)`: EvChild 객체를 생성합니다.
* `setCallback(string $callback)`: 자식 프로세스가 종료되었을 때 호출되는 콜백 함수를 설정합니다.
* `enable()`: 자식 프로세스를 관리하기 위해 이벤트 루프에 등록합니다.
* `disable()`: 자식 프로세스를 관리하기 위해 이벤트 루프에서 등록을 해제합니다.

예제

다음 예제는 EvChild 클래스를 사용하여 자식 프로세스를 관리하는 방법을 보여줍니다.

#hostingforum.kr
php

<?php



// EvLoop 클래스를 사용하여 이벤트 루프를 생성합니다.

$loop = new EvLoop();



// 자식 프로세스를 생성합니다.

$stdin = fopen('php://stdin', 'r');

$stdout = fopen('php://stdout', 'w');

$stderr = fopen('php://stderr', 'w');



$pid = pcntl_fork();



if ($pid == -1) {

    // fork 실패시

    die('fork failed');

} elseif ($pid) {

    // 부모 프로세스

    $stdin = new EvChild($loop, $pid, $stdin, $stdout, $stderr);

    $stdin->setCallback('childCallback');

    $stdin->enable();

    $loop->loop();

} else {

    // 자식 프로세스

    // 자식 프로세스에서 실행할 코드를 여기에 작성합니다.

    echo "자식 프로세스입니다.
";

    sleep(2);

    echo "자식 프로세스가 종료됩니다.
";

    exit(0);

}



function childCallback(EvChild $child) {

    // 자식 프로세스가 종료되었을 때 호출되는 콜백 함수입니다.

    echo "자식 프로세스가 종료되었습니다.
";

}



?>



이 예제에서는 EvChild 클래스를 사용하여 자식 프로세스를 관리하는 방법을 보여줍니다. 자식 프로세스는 부모 프로세스에서 fork() 시스템 호출을 사용하여 생성됩니다. 부모 프로세스는 자식 프로세스의 표준 입력, 출력, 에러를 관리하는 데 사용되는 EvChild 객체를 생성하고, 자식 프로세스가 종료되었을 때 호출되는 콜백 함수를 설정합니다. 자식 프로세스는 부모 프로세스에서 fork() 시스템 호출을 사용하여 생성되었으므로, 자식 프로세스는 부모 프로세스의 자원을 공유합니다.
  • profile_image
    나우호스팅 @pcs8404 

    호스팅포럼 화이팅!

    댓글목록

    등록된 댓글이 없습니다.

  • 전체 10,077건 / 573 페이지

검색

게시물 검색