"PHP 배치 백그라운드 실행"의 두 판 사이의 차이

36번째 줄: 36번째 줄:
:→ 정상적으로 수행된다.
:→ 정상적으로 수행된다.


==정상==
==nohup 없이 수행==
PHP 5.2.10에서 돌려보니 잘 된다.
PHP 5.2.10에서 돌려보니 잘 된다.
<source lang='dos'>
<source lang='dos'>

2013년 6월 25일 (화) 15:54 판

1 개요

How to send the process to background, In PHP CLI mode
PHP 배치 백그라운드 실행
  • PHP 5.2.x 버전까지는 다음과 같이 CLI에서 php를 백그라운드로 실행할 수 있다.
php 파일명.php &
  • PHP 5.3.x 버전부터는 nohup을 이용해야만 백그라운드로 실행할 수 없다. 물론 이전 버전도 이 방법으로 실행가능
nohup php 파일명.php &

2 Foreground 실행

[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 실행
[root@jmnote02 ~]# php test.php
Process #9897: i=0
Process #9897: i=1
Process #9897: i=2
Process #9897: done...
→ 정상적으로 수행된다.

3 nohup 없이 수행

PHP 5.2.10에서 돌려보니 잘 된다.

[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 ~]#

4 5.3.3 버그

PHP 5.3.3 에서는 백그라운드 실행이 제대로 안된다. (버그)

[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 ~]#
→ 실행되지 않고 종료되어 버렸다.

5 같이 보기

6 주석


7 참고 자료

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}