PHP 배치 백그라운드 실행

Jmnote bot (토론 | 기여)님의 2020년 11월 2일 (월) 00:42 판 (봇: 자동으로 텍스트 교체 (-<source +<syntaxhighlight ))

1 개요

How to send the process to background, In PHP CLI mode
Running PHP script from command line as background process
PHP 배치 백그라운드 실행
  • PHP 5.2.x 버전까지는 다음과 같이 CLI에서 php를 백그라운드로 실행할 수 있다.

<syntaxhighlight lang='bash'> php 파일명.php & </source>

  • PHP 5.3.x 버전부터는 nohup을 이용해야만 php를 백그라운드로 실행할 수 있다. (물론 이전 버전도 가능)

<syntaxhighlight lang='bash'> nohup php 파일명.php & </source>

2 Foreground 실행

<syntaxhighlight lang='console'> [root@zetawiki02 ~]# 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"; </source>

→ 1초에 1번씩 메시지 출력하는 PHP 소스

<syntaxhighlight lang='console'> [root@zetawiki02 ~]# php test.php Process #9897: i=0 Process #9897: i=1 Process #9897: i=2 Process #9897: done... </source>

→ 정상적으로 수행된다.

3 nohup 없이 백그라운드 실행

3.1 PHP 5.2.x 가능

PHP 5.2.10에서 돌려보니 잘 된다. <syntaxhighlight lang='console'> [root@zetawiki01 ~]# php test.php & [1] 27991 [root@zetawiki01 ~]# php test.php & [2] 27992 [root@zetawiki01 ~]# php test.php & [3] 27993 [root@zetawiki01 ~]# [root@zetawiki01 ~]# [root@zetawiki01 ~]# 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@zetawiki01 ~]# </source>

3.2 PHP 5.3.x 불가능

PHP 5.3.3 에서는 백그라운드 실행이 제대로 안된다. <syntaxhighlight lang='console'> [root@zetawiki02 ~]# php test.php & [27] 9308 [root@zetawiki02 ~]# php test.php & [28] 9309 [root@zetawiki02 ~]# php test.php & [29] 9310 [root@zetawiki02 ~]# [root@zetawiki02 ~]# [root@zetawiki02 ~]#

[27] Stopped php test.php

[28] Stopped php test.php

[29]+ Stopped php test.php [root@zetawiki02 ~]# </source>

→ 실행되지 않고 종료되어 버렸다.

4 nohup으로 백그라운드 실행 ★

PHP 버전에 상관없이 잘 된다. <syntaxhighlight lang='console'> [root@zetawiki02 ~]# nohup php test.php & [30] 12884 [root@zetawiki02 ~]# nohup php test.php & [31] 12885 nohup: ignoring input and appending output to `nohup.out' [root@zetawiki02 ~]# nohup php test.php & [32] 12886 nohup: ignoring input and appending output to `nohup.out' [root@zetawiki02 ~]# nohup: ignoring input and appending output to `nohup.out' [root@zetawiki02 ~]# [root@zetawiki02 ~]# [root@zetawiki02 ~]# [30] Done nohup php test.php [31] Done nohup php test.php [32] Done nohup php test.php [root@zetawiki02 ~]# [root@zetawiki02 ~]# 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... </source>

5 같이 보기

6 참고

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