Press "Enter" to skip to content

[카테고리:] 미분류

php 프로그램에서 콘솔로 출력되는 데이터를 파일로 기록하기

php 프로그램을 하면 echo, print, print_r 등 콘솔로 출력을 하는 경우가 많다.

배치로 돌릴 경우에는 날라가 버리는데 cron등에 아래와 같이 등록하면 로그로 남길 수가 있다.

그것도 날짜별로.

주의할점은 실행할 스크립트가 있는 디렉토리 아래에 txt라는 서브디렉토리가 있어야 한다.

cd /script/directory
# 오늘날짜
today=$(date "+%Y%m%d")
# 로그파일명 저장. 상대경로로 했는데... 안되면 절대경로로 바꿔주세요
logfile=./txt/${today}gen.log
# 스크립트 실행
sudo sh -c "php my_script.php" >> ${logfile}
# 날짜 로그파일 넣는 다른 방법
sudo php script_name.php >> ./txt/$(date +\%Y\%m\%d)_log.txt &

PHP에서 콜백함수 사용하기

간단하게 호출하기

<?php
function cbExclaim($str) 
{
  return print($str."!\n");
}

function cbAsk($str) 
{
  return print($str."?\n");
}

function callCallback($str, $cbFunc) 
{
  // $cbFunc로 콜백 함수 호출
  $cbFunc($str);
}

// $cbFunc 파라미터에 "cbExclaim", "cbAsk" 입력하여 콜백함수 호출
callCallback("안녕", "cbExclaim");
callCallback("안녕", "cbAsk");
?>

출력

안녕!
안녕?

인스턴스의 함수를 파라미터와 함께 호출하기

<?php
    // $obj는 클래스의 인스턴스. function_name 이라는 함수를 가지고 있다.
    $cbfunc = array(&$obj, "function_name");
    $param = array("param1", "param2", true);

    // $obj->function_name 함수를 
    // 파라미터 3개("param1", "param2", true)를 대입하여 호출한다.
    $rtn = call_user_func_array($cbfunc, $param);
?>