백엔드 개발 PHP 튜토리얼 Workerman Notes-php는 데몬 프로세스를 생성합니다.

Workerman Notes-php는 데몬 프로세스를 생성합니다.

Jul 29, 2016 am 08:51 AM
exception fork pid posix

data-id="1190000005056078" data-license="sa">

사용기능

<code>pcntl_fork();//创建子进程
posix_setsid();//设置当前进程为进程组长

posix_getpid();//获取进程id</code>
로그인 후 복사

근로자 중위 일반 프로세스

<code>/**
 * Run as deamon mode.
 *
 * @throws Exception
 */
protected static function daemonize()
{
    if (!self::$daemonize) {
        return;
    }
    /**
     * 重设文件权限掩码
     * 子进程从父进程继承了文件权限
     * 若子进程不涉及到文件创建,可取消
     */
    umask(0);
    $pid = pcntl_fork();//创建子进程
    if (-1 === $pid) {
        throw new Exception('fork fail');
    } elseif ($pid > 0) {
        exit(0); //父进程退出
    }
    /**
     * 更改子进程为进程组长
     * 使子进程摆脱父进程控制
     */
    if (-1 === posix_setsid()) {
        throw new Exception("setsid fail");
    }
    // Fork again avoid SVR4 system regain the control of terminal.
    $pid = pcntl_fork();
    if (-1 === $pid) {
        throw new Exception("fork fail");
    } elseif (0 !== $pid) {
        exit(0);
    }
}</code>
로그인 후 복사

기타 설명

기본 개념

데몬 프로세스: Linux의 백그라운드 서비스 프로세스입니다. 이는 일반적으로 제어 터미널과 독립적이며 주기적으로 일부 작업을 수행하거나 발생하는 특정 이벤트를 처리하기 위해 기다리는 수명이 긴 프로세스입니다. 데몬은 시스템이 부팅될 때 시작되고 시스템이 종료될 때 종료되는 경우가 많습니다.

프로세스 그룹: 하나 이상의 프로세스 모음입니다. 프로세스 그룹은 프로세스 그룹 ID로 고유하게 식별됩니다. 프로세스 번호(PID) 외에 프로세스 그룹 ID도 프로세스의 필수 속성입니다. 각 프로세스 그룹에는 리더 프로세스가 있으며, 리더 프로세스의 프로세스 번호는 프로세스 그룹 ID와 같습니다. 그리고 프로세스 그룹 ID는 그룹 리더 프로세스 종료에 영향을 받지 않습니다.

세션 주기: 세션은 하나 이상의 프로세스 그룹의 모음입니다. 일반적으로 세션은 사용자가 로그인할 때 시작되고 사용자가 로그아웃할 때 종료됩니다. 이 기간 동안 사용자가 실행하는 모든 프로세스는 이 세션에 속합니다.

프로세스 생성

  1. 하위 프로세스를 포크하고 상위 프로세스가 종료됩니다

  2. 하위 프로세스를 그룹 리더 프로세스로 변경

  3. 현재 디렉터리를 루트 디렉터리(chdir())로 변경

  4. 파일 권한 마스크 재설정

  5. 파일 설명자 닫기

  6. 데몬 종료, SIGCHLD 신호 처리

신호 처리

//TODO

참고 자료

데몬 프로세스의 PHP 구현

위 내용은 프로세스의 측면을 포함하여 Workerman Notes-php 생성 데몬 프로세스를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Java의 ConcurrentModificationException 예외에 대한 원인 및 해결 방법 Java의 ConcurrentModificationException 예외에 대한 원인 및 해결 방법 Jun 25, 2023 am 10:33 AM

Java에서는 여러 스레드가 동시에 컬렉션 개체를 작동하는 경우 ConcurrentModificationException 예외가 발생할 수 있습니다. 이 예외는 일반적으로 요소를 수정하거나 삭제할 때 컬렉션을 순회할 때 발생하며 이로 인해 컬렉션 상태가 일관되지 않아 비정상이 발생합니다. . 이 기사에서는 이 예외의 원인과 해결 방법을 살펴보겠습니다. 1. 예외 발생 원인 일반적으로 ConcurrentModificationException 예외

PHP의 POSIX 확장을 사용하는 방법은 무엇입니까? PHP의 POSIX 확장을 사용하는 방법은 무엇입니까? Jun 03, 2023 am 08:01 AM

PHP용 POSIX 확장은 PHP가 POSIX 호환 운영 체제와 상호 작용할 수 있게 해주는 함수 및 상수 세트입니다. POSIX(PortableOperatingSystemInterface)는 소프트웨어 개발자가 다양한 UNIX 또는 UNIX 유사 운영 체제에서 실행될 수 있는 응용 프로그램을 작성할 수 있도록 설계된 운영 체제 인터페이스 표준 세트입니다. 이 기사에서는 설치 및 사용을 포함하여 PHP용 POSIX 확장을 사용하는 방법을 소개합니다. 1. PHP의 POSIX 확장을 설치합니다.

Win7 작업 관리자에서 pid를 표시하는 방법 편집기에서 표시 방법을 알려줄 것입니다. Win7 작업 관리자에서 pid를 표시하는 방법 편집기에서 표시 방법을 알려줄 것입니다. Jan 11, 2024 pm 07:00 PM

많은 친구들이 pid 식별자에 익숙하지 않을 수 있으며, 작업 관리자에서 확인할 수 있습니다. 그러나 일부 사용자는 작업 관리자를 열 때 PID 식별자를 찾을 수 없습니다. 실제로 사용자가 프로세스 PID 식별자를 보려면 이를 보려면 "작업 관리자"를 설정해야 합니다. win7 시스템을 예로 들어 프로세스 PID 식별자를 보는 방법. PID 식별자는 Windows 운영 체제가 실행 중인 프로그램에 자동으로 할당한 고유한 일련 번호입니다. PID는 프로세스가 종료된 후 시스템에 의해 재활용되며 사용자가 프로세스를 확인해야 할 때 계속해서 할당될 수 있습니다. , 그들은 작업 관리자를 사용하여 확인합니다. 프로세스 PID 식별자를 확인하는 방법은 무엇입니까? 아래에서 공유해드리겠습니다

Linux 및 BSD 대안 Redox OS는 COSMIC 데스크탑 애플리케이션 및 여러 최적화를 통해 버전 0.9.0에 도달했습니다. Linux 및 BSD 대안 Redox OS는 COSMIC 데스크탑 애플리케이션 및 여러 최적화를 통해 버전 0.9.0에 도달했습니다. Sep 12, 2024 pm 12:18 PM

2015년 4월 20일, Redox OS는 "안전성, 자유도, 신뢰성, 정확성 및 실용성에 중점을 둔" 새로운 마이크로커널 운영 체제로 등장했습니다. Rust와 어셈블리 언어로 작성된 이 프로젝트는 다음과 같은 코드 조각에서 영감을 받았습니다.

PHP PCNTL의 포크 실패에 대한 일반적인 오류 및 해결 방법 PHP PCNTL의 포크 실패에 대한 일반적인 오류 및 해결 방법 Feb 28, 2024 am 11:06 AM

PHPPCNTL의 포크 실패에 대한 일반적인 오류 및 해결 방법 프로세스 관리를 위해 PHPPCNTL 확장을 사용할 때 포크 실패 문제가 자주 발생합니다. Fork는 자식 프로세스를 생성하는 방법으로, 일부 오류로 인해 Fork 작업이 실패하는 경우가 있습니다. 이 기사에서는 몇 가지 일반적인 포크 실패 오류와 해당 솔루션을 소개하고 독자가 이러한 문제를 더 잘 이해하고 처리하는 데 도움이 되는 특정 코드 예제를 제공합니다. 1. 메모리 부족으로 인해 발생할 수 있는 오류 메시지:

PHP 치명적인 오류에 대한 솔루션: 포착되지 않은 예외 'PDOException' PHP 치명적인 오류에 대한 솔루션: 포착되지 않은 예외 'PDOException' Jun 23, 2023 pm 12:09 PM

PHP 개발 시 "PHPFatalerror:UncaughtException'PDOException'"과 같은 오류가 발생할 수 있습니다. 이는 PHP가 데이터베이스를 작동할 때 오류로 인해 발생하는 예외입니다. 이 오류를 제때 처리하지 않으면 프로그램이 중단되거나 예상치 못한 오류가 발생할 수 있습니다. 그렇다면 이 문제를 해결하는 방법은 무엇입니까? 다음은 몇 가지 일반적인 솔루션입니다. 1. 데이터베이스 매개변수를 확인합니다. 먼저 데이터베이스에 연결할 때 전달되는 매개변수를 확인해야 합니다.

Java에서 UnsupportedEncodingException을 처리하는 방법은 무엇입니까? Java에서 UnsupportedEncodingException을 처리하는 방법은 무엇입니까? Jun 25, 2023 am 08:02 AM

Java에서 UnsupportedEncodingException을 처리하는 방법은 무엇입니까? Java 프로그래밍에서는 UnsupportedEncodingException이 발생할 수 있습니다. 이 예외는 일반적으로 잘못된 인코딩 변환이나 지원되지 않는 인코딩으로 인해 발생합니다. 이번 글에서는 UnsupportedEncodingException 예외가 발생하는 원인과 처리 방법을 소개하겠습니다. 지원되지 않는 E란 무엇입니까?

PHP PCNTL 확장 포크 기능 실패 원인 분석 PHP PCNTL 확장 포크 기능 실패 원인 분석 Feb 28, 2024 pm 09:42 PM

PHPPCNTL 확장 포크 기능 실패 원인 분석 PHP에서 PCNTL 확장은 프로세스 제어를 처리하기 위한 일련의 기능을 제공하며, 그 중 포크 기능은 일반적으로 사용되는 기능 중 하나입니다. 포크 기능을 통해 특정 작업을 수행하는 하위 프로세스를 생성할 수 있는데, 이는 동시 처리 프로그램을 작성할 때 매우 유용합니다. 하지만 PCNTL 확장 포크 기능을 사용할 때 포크 오류가 발생하는 경우가 있습니다. 이 글에서는 이러한 상황의 원인을 분석하고 구체적인 코드를 제공합니다.

See all articles