PCNTL extension example
function code_for_child_process() {
// Executed in the child process.
}
function code_for_failed_to_launch_child_process() {
// Executed in the parent process when forking a child didn't work.
}
function fork_process() {
$pid = pcntl_fork();
if ($pid == -1) {
code_for_failed_to_launch_child_process();
}
else if ($pid == 0) {
code_for_child_process();
exit(); // Make sure to exit.
}
else {
return $pid;
}
}
//-----------------------
< 사용시 주의 사항 >
* fork는 다른 프로세스에 신호를 보내서 , 예상치 못한 동작을 실행 시킬 가능성이 있다.
https://stackoverflow.com/questions/5281244/what-are-the-side-effects-of-enabling-process-control-pcntl-in-php-on-web-serv
자식 프로세스를 fork한 후 데이터베이스 연결이 끊어질수 있다.(재연결 필요)
* fork-bomb 공격을 받을수 있다. (웹서버 다운, 보안 문제)
https://en.wikipedia.org/wiki/Fork_bomb
//------------------
// 참고
Parent and child process management in PHP with `pcntl_fork()` and `pcntl_wait()`
http://jonglick.com/blog/parent-and-child-process-management-in-php-with-pcntl-fork-and-pcntl-wait
반응형
'Code > PHP' 카테고리의 다른 글
[php] php에서 자바스크립트 함수 실행하는 방법 (v8js) (0) | 2020.04.10 |
---|---|
[PHP] underscore(lodash) 같은 라이브러리 (0) | 2020.04.05 |
php 7.3 PCNTL 확장 기능 활성화 방법 (0) | 2020.03.24 |
[php] PHP 7.4의 새로운 기능 (0) | 2020.03.12 |
[php] PHP 7.4에서 삭제예정으로 정해진 기능(Deprecated) (0) | 2020.03.12 |