Jmnote bot (토론 | 기여) 잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight)) |
|||
(사용자 2명의 중간 판 17개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
{{테스트|CentOS, PHP 5.2.10}} | {{테스트|CentOS, PHP 5.2.10, PHP 5.3.3}} | ||
==개요== | ==개요== | ||
;How to send the process to background, In PHP CLI mode | ;How to send the process to background, In PHP CLI mode | ||
;Running PHP script from command line as background process | |||
;PHP 배치 백그라운드 실행 | ;PHP 배치 백그라운드 실행 | ||
*PHP 5.2.x 버전까지는 다음과 같이 [[CLI]]에서 php를 백그라운드로 실행할 수 있다. | *PHP 5.2.x 버전까지는 다음과 같이 [[CLI]]에서 php를 백그라운드로 실행할 수 있다. | ||
< | <syntaxhighlight lang='bash'> | ||
php 파일명.php & | php 파일명.php & | ||
</ | </syntaxhighlight> | ||
*PHP 5.3.x 버전부터는 nohup을 이용해야만 백그라운드로 실행할 수 | *PHP 5.3.x 버전부터는 nohup을 이용해야만 php를 백그라운드로 실행할 수 있다. (물론 이전 버전도 가능) | ||
< | <syntaxhighlight lang='bash'> | ||
nohup php 파일명.php & | nohup php 파일명.php & | ||
</ | </syntaxhighlight> | ||
==Foreground 실행== | ==Foreground 실행== | ||
< | <syntaxhighlight lang='console'> | ||
[root@ | [root@zetawiki02 ~]# cat test.php | ||
<?php | <?php | ||
$pid = getmypid(); | $pid = getmypid(); | ||
23번째 줄: | 24번째 줄: | ||
} | } | ||
echo "Process #$pid: done...\n"; | echo "Process #$pid: done...\n"; | ||
</ | </syntaxhighlight> | ||
:→ 1초에 1번씩 메시지 출력하는 PHP 소스 | :→ 1초에 1번씩 메시지 출력하는 PHP 소스 | ||
<syntaxhighlight lang='console'> | |||
< | [root@zetawiki02 ~]# php test.php | ||
[root@ | |||
Process #9897: i=0 | Process #9897: i=0 | ||
Process #9897: i=1 | Process #9897: i=1 | ||
Process #9897: i=2 | Process #9897: i=2 | ||
Process #9897: done... | Process #9897: done... | ||
</ | </syntaxhighlight> | ||
:→ 정상적으로 수행된다. | :→ 정상적으로 수행된다. | ||
==nohup 없이 백그라운드 실행== | ==nohup 없이 백그라운드 실행== | ||
===PHP 5.2.x 가능=== | |||
PHP 5.2.10에서 돌려보니 잘 된다. | PHP 5.2.10에서 돌려보니 잘 된다. | ||
< | <syntaxhighlight lang='console'> | ||
[root@ | [root@zetawiki01 ~]# php test.php & | ||
[1] 27991 | [1] 27991 | ||
[root@ | [root@zetawiki01 ~]# php test.php & | ||
[2] 27992 | [2] 27992 | ||
[root@ | [root@zetawiki01 ~]# php test.php & | ||
[3] 27993 | [3] 27993 | ||
[root@ | [root@zetawiki01 ~]# | ||
[root@ | [root@zetawiki01 ~]# | ||
[root@ | [root@zetawiki01 ~]# Process #27991: i=0 | ||
Process #27992: i=0 | Process #27992: i=0 | ||
Process #27993: i=0 | Process #27993: i=0 | ||
63번째 줄: | 64번째 줄: | ||
[2]- Done php test.php | [2]- Done php test.php | ||
[3]+ Done php test.php | [3]+ Done php test.php | ||
[root@ | [root@zetawiki01 ~]# | ||
</ | </syntaxhighlight> | ||
==5.3. | ===PHP 5.3.x 불가능=== | ||
PHP 5.3.3 에서는 백그라운드 실행이 제대로 안된다. | PHP 5.3.3 에서는 백그라운드 실행이 제대로 안된다. | ||
< | <syntaxhighlight lang='console'> | ||
[root@ | [root@zetawiki02 ~]# php test.php & | ||
[27] 9308 | [27] 9308 | ||
[root@ | [root@zetawiki02 ~]# php test.php & | ||
[28] 9309 | [28] 9309 | ||
[root@ | [root@zetawiki02 ~]# php test.php & | ||
[29] 9310 | [29] 9310 | ||
[root@ | [root@zetawiki02 ~]# | ||
[root@ | [root@zetawiki02 ~]# | ||
[root@ | [root@zetawiki02 ~]# | ||
[27] Stopped php test.php | [27] Stopped php test.php | ||
84번째 줄: | 85번째 줄: | ||
[29]+ Stopped php test.php | [29]+ Stopped php test.php | ||
[root@ | [root@zetawiki02 ~]# | ||
</ | </syntaxhighlight> | ||
:→ 실행되지 않고 종료되어 버렸다. | :→ 실행되지 않고 종료되어 버렸다. | ||
==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... | |||
</syntaxhighlight> | |||
==같이 보기== | ==같이 보기== | ||
*[[리눅스 스크립트 백그라운드 실행]] | |||
*[[PHP 배치 작업]] | *[[PHP 배치 작업]] | ||
*[[nohup]] | |||
==참고== | |||
==참고 | |||
*https://bugs.php.net/bug.php?id=60185 | *https://bugs.php.net/bug.php?id=60185 | ||
*http://stackoverflow.com/questions/6989161/running-php-script-from-command-line-as-background-process | |||
[[분류: PHP]] | [[분류: PHP]] |
2020년 11월 2일 (월) 00:56 기준 최신판
✔️ CentOS, PHP 5.2.10, PHP 5.3.3에서 테스트하였습니다.
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를 백그라운드로 실행할 수 있다.
Bash
Copy
php 파일명.php &
- PHP 5.3.x 버전부터는 nohup을 이용해야만 php를 백그라운드로 실행할 수 있다. (물론 이전 버전도 가능)
Bash
Copy
nohup php 파일명.php &
2 Foreground 실행[ | ]
Console
Copy
[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";
- → 1초에 1번씩 메시지 출력하는 PHP 소스
Console
Copy
[root@zetawiki02 ~]# 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에서 돌려보니 잘 된다.
Console
Copy
[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 ~]#
3.2 PHP 5.3.x 불가능[ | ]
PHP 5.3.3 에서는 백그라운드 실행이 제대로 안된다.
Console
Copy
[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 ~]#
- → 실행되지 않고 종료되어 버렸다.
4 nohup으로 백그라운드 실행 ★[ | ]
PHP 버전에 상관없이 잘 된다.
Console
Copy
[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...
5 같이 보기[ | ]
6 참고[ | ]
편집자 Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.