프로그래밍 주의사항
운영 체제
webman은 linux 시스템과 windows 시스템 모두에서 실행될 수 있습니다. 그러나 workerman은 windows에서 다중 프로세스 설정 및 데몬 프로세스를 지원하지 않으므로, windows 시스템은 개발 환경에서 개발 및 디버깅 용도로만 사용하는 것이 권장됩니다. 생산 환경에서는 linux 시스템을 사용해야 합니다.
시작 방법
linux 시스템
php start.php start
이 명령은 디버그 모드로, 일반적으로 개발 시 사용됩니다. 파일 업데이트를 monitor 프로세스가 자동으로 감지하여 reload를 수행하며, 데이터 출력은 터미널에 표시됩니다. 터미널을 닫으면 webman도 자동으로 종료됩니다.
php start.php start -d
이 명령은 데몬 프로세스 모드로, 생산 환경에서 사용됩니다. 터미널을 닫아도 webman은 계속 실행되며, 데이터 출력은 터미널에 표시되지 않습니다. 코드 업데이트를 원할 경우 php start.php reload
또는 php start.php restart -d
를 실행해야 합니다.
windows 시스템
windows.bat
를 실행하거나 php windows.php
명령을 사용하여 시작하며, ctrl c를 눌러 중지합니다.
windows 시스템에서는 stop, reload, status, reload connections 등의 명령을 지원하지 않습니다.
windows는 데몬 프로세스 모드를 지원하지 않습니다.
상주 메모리
webman은 상주 메모리 프레임워크로, 일반적으로 php 파일이 로드된 후 opcode의 방식으로 상주 메모리에 존재하며, 다시 디스크에서 읽지 않습니다(템플릿 파일 제외).
따라서 생산 환경에서 비즈니스 코드나 설정 변경 후에는 php start.php reload
를 실행해야 적용됩니다.
프로세스 관련 설정을 변경하거나 새로운 composer 패키지를 설치한 경우에는 php start.php restart
를 통해 재시작해야 합니다.
개발 편의를 위해, webman은 비즈니스 파일 업데이트를 모니터링하는 monitor 사용자 정의 프로세스를 기본적으로 제공합니다. 비즈니스 파일이 업데이트되면 자동으로 reload를 수행합니다.
이 기능은 workerman이 디버그 모드로 실행될 때만 활성화됩니다(시작 시-d
를 추가하지 않을 때). windows 사용자들은windows.bat
또는php windows.php
를 실행하여 활성화할 수 있습니다.
출력 문장에 대해
전통적인 php-fpm 프로젝트에서는 echo
, var_dump
등의 함수를 사용하여 데이터를 출력하면 페이지에 직접 표시되지만, webman 개발 과정에서는(디버그 모드로 시작할 때) 이러한 출력이 종종 터미널에 표시되며, 페이지에는 표시되지 않습니다(템플릿 파일 내 출력 제외).
exit
또는 die
문 수행 금지
die
또는 exit
를 실행하면 프로세스가 종료되고 재시작되므로 현재 요청이 올바르게 응답되지 않습니다.
pcntl_fork
함수 수행 금지
pcntl_fork
는 사용자가 프로세스를 생성하는 함수로, webman에서는 허용되지 않습니다.
composer로 설치한 컴포넌트
composer require xxx/xxx
로 설치한 컴포넌트는 재시작(restart)해야 적용됩니다.