✔️ CentOS, PHP 5.2.10에서 테스트하였습니다.
1 개요
- How to send the process to background, In PHP CLI mode
- PHP 배치 백그라운드 실행
- PHP 5.2.x 버전까지는 다음과 같이 CLI에서 php를 백그라운드로 실행할 수 있다.
Bash
Copy
php 파일명.php &
- PHP 5.3.x 버전부터는 nohup을 이용해야만 백그라운드로 실행할 수 없다. 물론 이전 버전도 이 방법으로 실행가능
Bash
Copy
nohup php 파일명.php &
2 Foreground 실행
bat
Copy
[root@jmnote02 ~]# cat test.php
<?php
$pid = getmypid();
for($i=0;$i<3;$i++) {
echo "Process #$pid: i=$i\n";
sleep(1);
}
echo "Process #$pid: done...\n";
- → 1초에 1번씩 메시지 출력하는 PHP 소스
- foreground 실행
bat
Copy
[root@jmnote02 ~]# php test.php
Process #9897: i=0
Process #9897: i=1
Process #9897: i=2
Process #9897: done...
- → 정상적으로 수행된다.
3 nohup 없이 백그라운드 실행
3.1 PHP 5.2.x
PHP 5.2.10에서 돌려보니 잘 된다.
bat
Copy
[root@jmnote01 ~]# php test.php &
[1] 27991
[root@jmnote01 ~]# php test.php &
[2] 27992
[root@jmnote01 ~]# php test.php &
[3] 27993
[root@jmnote01 ~]#
[root@jmnote01 ~]#
[root@jmnote01 ~]# Process #27991: i=0
Process #27992: i=0
Process #27993: i=0
Process #27991: i=1
Process #27993: i=1
Process #27992: i=1
Process #27991: i=2
Process #27993: i=2
Process #27992: i=2
Process #27991: done...
Process #27993: done...
Process #27992: done...
[1] Done php test.php
[2]- Done php test.php
[3]+ Done php test.php
[root@jmnote01 ~]#
3.2 PHP 5.3.x
PHP 5.3.3 에서는 백그라운드 실행이 제대로 안된다.
bat
Copy
[root@jmnote02 ~]# php test.php &
[27] 9308
[root@jmnote02 ~]# php test.php &
[28] 9309
[root@jmnote02 ~]# php test.php &
[29] 9310
[root@jmnote02 ~]#
[root@jmnote02 ~]#
[root@jmnote02 ~]#
[27] Stopped php test.php
[28] Stopped php test.php
[29]+ Stopped php test.php
[root@jmnote02 ~]#
- → 실행되지 않고 종료되어 버렸다.
4 nohup으로 백그라운드 실행
PHP 버전에 상관없이 잘 된다.
bat
Copy
[root@jmnote02 ~]# nohup php test.php &
[30] 12884
[root@jmnote02 ~]# nohup php test.php &
[31] 12885
nohup: ignoring input and appending output to `nohup.out'
[root@jmnote02 ~]# nohup php test.php &
[32] 12886
nohup: ignoring input and appending output to `nohup.out'
[root@jmnote02 ~]# nohup: ignoring input and appending output to `nohup.out'
[root@jmnote02 ~]#
[root@jmnote02 ~]#
[root@jmnote02 ~]#
[30] Done nohup php test.php
[31] Done nohup php test.php
[32] Done nohup php test.php
[root@jmnote02 ~]#
[root@jmnote02 ~]# cat nohup.out
Process #12884: i=0
Process #12886: i=0
Process #12885: i=0
Process #12884: i=1
Process #12886: i=1
Process #12885: i=1
Process #12885: i=2
Process #12884: i=2
Process #12886: i=2
Process #12885: done...
Process #12884: done...
Process #12886: done...
5 같이 보기
6 주석
7 참고 자료
편집자 Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.