리눅스(Linux) php 쉘(Shell) 스크립트 실행하기, 백그라운드로 php 사용하기(nohup)
php 파일을 리눅스에서 쉘 방식으로 직접 실행을 해보자.
실행할 php파일이 있는 디렉토리로 이동한다.
]# cd 실행할 php파일 디렉토리
방법1>
]# ./파일명.php
방법2>
]# php 파일명.php
* 방법1,2처럼해도 실행이 안된다면 whereis 명령어로 먼저 php파일 위치를 알아낸다.
]# whereis php
php: /usr/bin/php /etc/php.d /etc/php.ini /usr/lib/php /usr/share/man/man1/php.1.gz
위 내용은 php설치설정에 따라 다를 수 있다.
방법3>
]# /usr/bin/php 파일명.php
참고1> 권한이 없다고 하면(Permission denied) 실행할 php파일에 대한 권한을 확인해 본다.
]# chmod 744 파일명.php
또는 755, 777등 권한에 맞게 실행 권한을 부여한다.
참고2> 메일링처럼 많은 데이터를 처리하는 php 파일을 좀 더 빨리 처리하고 싶다면
php 헤더(header) 값을 출력하지 않으면 실행속도가 좋아진다. (옵션 -q)
]# ./파일명.php -q
실행할 파일명.php 소스 상단에 아래 소스를 삽입해도 된다.
#!/usr/bin/php -q
<?php
echo "php 쉘스크립트";
?>
참고3> 백그라운드로 실행하고 싶다면 & 을 사용한다.(반대로 포그라운드로 전환할 수도 있다. <- 추후 작성예정)
]# ./파일명.php &
참고4>
실행 후 어떠한 값도 남기지 않는다.
]# ./파일명.php > /dev/null &
참고5>
실행을 한 사용자가 로그아웃을 하게 되면 실행중인 프로세스가 죽게되는데
로그아웃을 해도 실행을 마칠때까지 계속 살아있게하려면 nohup 명령어를 사용한다.
]# nohup ./파일명.php &
참고6>
nohup 명령어를 사용하면 실행을 마친 후 결과 값이 파일(nohup.out)로 자동 저장하게 된다.
]# nohup ./파일명.php &
]# nohup: appending output to `nohup.out'
cat 명령어로 내용을 확인해 보자
]# cat nohup.out
참고7>
nohup 명령어로 실행을 마친 후 결과를 원하는 곳에 원하는 파일명으로 저장하고 싶다면
]# nohup ./파일명.php > log/저장할파일명 &
실사용예> header 출력제한은 소스 상단에 삽입
]# nohup ./실행파일명.html > log/저장할파일명.log &
http://ra2kstar.tistory.com/155
PHP
PHP 쉘에서의 php 실행 및 인자값 받기
http://ra2kstar.tistory.com/167
PHP $argc 와 $argv 의 차이점과 활용
PHP에서 인자값을 활용하기 위해서 $argc 와 $argv를 사용한다. 이 둘의 차이점은 무엇일까?
$argc = 인자값의 개수가 자동으로 저장된다.
$argv = 실제 인자값이 문자열로 저장되어 있다.
여기서 $argv[0] 은 PHP 파일 자신의 이름이 저장되어 있기때문에 $argc-1을 해줘야 실제 인자값으 개수를 알 수 있다.
다음은 $argc 와 $argv를 사용한 간단한 예제코드이다.
#!/usr/local/bin/php -q
<?php
echo "인자값의 갯수는 $argc 개 입니다.\n" ;
echo "이것은 php 파일의 이름을 포함한 갯수입니다.";
function usage($argv){
printf("입력받은 인자값 : %s , %s , %s \n" , $argv[0] , $argv[1] , $argv[2]);
}
if($argc == 3){
usage($argv);
exit(0);
}
?>
Illegal offset type 어쩌고 하는 에러
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=qna_function&wr_id=80429
배열이라서 안된다고 하는데 그건 모르겠고
$number = $_SERVER['argv']; 이렇게 받고
$r = match($number[1]) 이렇게 사용하고자 할떄 [ ]안에 숫자가 중요한 것 같다.
입력한 파라미터 순서대로 0,1,2,.. 이렇게 나가나보다.
나의 경우
php ./App/0829matching_test.php platanus.jpg 이렇게
실행할 php파일의 경로와 파라미터를 같이 줬기 때문에 []에 1을 넣었다.
파라미터 넘겨야 하니까~
[PHP] json_encode 할 때 'Invalid UTF-8 sequence in argument' warning
리눅스에서 무슨무슨 so 파일이 없다고 할 때
'차근차근 > PHP' 카테고리의 다른 글
[함수] php 서버에서 json escape unescape 하는 예제입니다. (0) | 2014.09.02 |
---|---|
유용한 함수 - json_decode,json_encode (0) | 2014.09.02 |
foreach (0) | 2014.08.28 |
무작정 자료수집2 (0) | 2014.07.30 |
무작정 자료수집3 (0) | 2014.07.30 |