PHP 배치 백그라운드 실행

Jmnote (토론 | 기여)님의 2013년 6월 25일 (화) 15:39 판

1 개요

How to send the process to background, In PHP CLI mode
PHP 배치 백그라운드 실행
  • CLI에서 php를 백그라운드로 실행할 수 있다.
  • 그런데 5.3.3 버전에서는[1] 백그라운드로는 실행이 되지 않는 버그가 있다.

2 테스트용 소스

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 정상

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

4 5.3.3 버그

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

5 같이 보기

6 주석

  1. PHP 5.3.8에서도

7 참고 자료

  • PHP 파일 다운로드 구현 2 (한글 파일명 지원)
    제가 파일다운로드 관련된 것이 서툴러서 파일 다운로드 부분을 인용하였습니다. 죄송합니다.
  • PHP에서 오라클 DB 사용
    감사합니당. YoWu
  • PHP 파일 업로드 구현
    파일정보 출력에서 $name $ext 가 정상적으로 출력되나요? 전부 echo의 쌍따옴표안에 있는데? 일리단사오육칠
  • PHP 파일 업로드 구현
    PHP echo에서 쌍따옴표 안의 변수는 해석되어 출력됩니다. 위 소스에서도 $name와 $ext가 두껍게 나와있죠? 일반 문자열과는 다르다는 표시죠.J Jmnote
  • PHP 파일 다운로드 구현 2 (한글 파일명 지원)
    'Windows NT 6.1' << 이부분은 접속한 윈도우의 플랫폼을 뜻하는걸로 압니다. ie11 접속하면 다음과 같이 바뀌었고 Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko rv:11.0 << 이부분이 Anmkst
  • Lib my.php
    Fatal error: Uncaught Error: Call to undefined function insert_rows() in D:\xampp\htdocs\naru\import_excel.php:38 Stack trace: #0 {main} thrown in D:\xampp\htdo 신정섭
  • Lib my.php
    함수 query()를 사용하면 됩니다. 예시 추가했으니 참고바랍니다.J Jmnote
  • 로또번호 생성
    초보를 위한 개발 실습 과제로군요 ㅎㅎ Pinkcrimson