300x250
반응형

 

<?
// 비디오 입력 및 저장이미지 경로 설정
$video_file = "/var/www/master/mobile/modyeye/videos/day.mp4";
$thum_file =  "/var/www/master/mobile/modyeye/videos/thum/day.png";

// 1. ffmpeg 명령어로 비디오 가로 세로 크기 가져오기
$command = 'ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 ' . escapeshellarg($video_file);
$size= shell_exec($command);	
$size = str_replace("\n", "", $size);


// 2. ffmpeg 명령어로 설정된 크기와 시간으로 이미지를 저장하기
$time = "00:00:00.000";
$cmd = "ffmpeg -i $video_file -ss $time -s $size $thum_file";
shell_exec($cmd);  
?>
300x250
반응형
300x250
반응형

현재 날짜 가지고 오기

$today = date("Y-m-d",time());

 

 

1달전 날짜 가지고오기

$day = date('Y-m-d', strtotime('-1 month'));


그외 날짜

date("Y-m-d", time());						//오늘
date("Y-m-d", strtotime("-1 week", time()));	//최근 일주일
date("Y-m-d", strtotime("-1 month", time()));	//최근 1개월
date("Y-m-d", strtotime("-6 month", time()));	//최근 6개월
date("Y-m-d", strtotime("-1 year", time()));	//최근 1년

 

응용 ( 6개월전 을 구한다음 하루 뺴기)

	$limit_dt = date(  'Y-m-d', strtotime('-1 days', strtotime('-6 month', time()))  );
300x250
반응형
300x250
반응형

먼저 우분투에서 동영상 썸네일 추출을 위해서는

ffmpeg 라는 프로그램을 설치해야 합니다.

 

당연히 설치전에는 root로 로그인 해야 겠죠.

아래 sudo -s를 사용해서 root 로그인 합시다.

sudo -s

 

아래 쉘커맨드를 입력하면 ffmpeg를 설치 합니다.

경고가 뜨면 Y 눌러주면 됩니다.

apt update
apt install ffmpeg

 

비디오 파일 경로와, 만들어질 썸네일 이미지 경로 + 파일명을 넣어줍니다.

size는 썸네일 이미지 크기

time는 동영상에서 뽑아낼 시간

$video_file = "/var/www/master/upload/comment/test.mp4"
$thum_file = "/var/www/master/upload/comment/thum.png"

if(true) // 동영상 이라면
{
	$size = "960x512";
    $time = "00:00:00.000";
    $cmd = "ffmpeg -i $video_file -ss $time -s $size $thum_file";
    shell_exec($cmd);  
}

shell_exec를 사용하여 ffmpeg 프로그램을 사용하여 썸네일 이미지를 추출합니다.

 

기타로는 이미지 크기변경도 가능합니다.

ffmpeg -i input.jpg -vf scale=320:240 output_320x240.png
300x250
반응형
300x250
반응형

PHP나 javascript 에서 JSON 처리시 한글처리가 안되서 오류가 자주 발생한다.

따라서 json으로 변환시 한글이 들어간 값을 처리해줘야 한다.

 

 

1. PHP (한글 인코딩) -> JAVASCRIPT (디코딩) 예제

(PHP에서 한글 인코딩)

$string_data = "한글값";
$value = rawurlencode( iconv( "CP949", "UTF-8", $string_data));

 

(JAVASCRIPT 에서 한글 디코딩)

 var value = decodeURIComponent(string_value);

 

PHP에서 JSON으로 변환시  jsonencode 처리전에 값을 변환 해야한다. (아래 예제와 같이)

$my_array = array ('idx' => '1',
'msg' => rawurlencode( iconv( "CP949", "UTF-8", '한글')));

echo  json_encode($my_array);

 

 

 

2. JAVASCRIPT (한글 인코딩) ->PHP  (디코딩) 예제

(JAVASCRIPT 에서 한글 인코딩)

var string_data = "한글값";
var value = encodeURIComponent(string_data);

(PHP에서 한글 디코딩)

$value = iconv("UTF-8", "CP949", rawurldecode($string_value));
300x250
반응형
300x250
반응형

 

서버를 운영하다 보면 특정 시간에 어떤 행동을 고정적으로 하고싶을 때가 있습니다.

 

예를 들면

  - 매일 새벽1시 백업

  - 매일 아침 문자 발송

  - 새벽 시간 바이러스 검사

  - 등등

 

이를 도와주는 프로그램이 crontab 이라는 프로그램 입니다. 아래와 같이 설치 하시면 됩니다.

우분투 설치 방법
sudo apt update -y
sudo apt install -y cron
CentOS 설치 방법
sudo yum update -y
sudo yum install -y cronie

설치가 끝나셨다면 이제 사용법을 알아볼게요.

 

 

먼저 작업 예정인 목록을 확인하는 방법
crontab -l

만약 스케쥴을 넣었다면 위와 같이 먼가 뜰껍니다.

 

 

스케쥴러 추가 및 수정 방법
위치를 옮깁니다.
cd /var/spool/cron/crontabs 

vi 편집기로 엽니다.
vi root 

위에 화면과 똑같은 내용이 뜰껍니다.

 

추가하고 싶으면 마지막 라인에 추가하면 되고, 수정은 vi 편집기 명령어를 사용하여 수정하면 됩니다.

0 1 * * * /root/backup.sh 이라인을 설명하면

 

숫자가 포함하는건 분 시간 일 월 년 순서 입니다.

시간 쉘커맨드
0 1 * * * /root/backup.sh

해석해 보면 매년, 매월, 매일 1시 마다 /root/backup.sh 을 해라

즉 매일 1시마다 backup을 해라라는 명령입니다.

 

backup.sh 파일에는

db를 백업 mysqldump 하고, 파일들을 tar 압축하는 명령어를 넣었습니다.

 

만약 특정 웹페이지를 호출하고 싶으면

sh 파일 안에다가

wget http://www.naver.com/today.php -O /dev/null

이런식으로 넣어두면 today.php 라는 페이지를 매일 1시에 호출하게 됩니다.

 

 

참 쉽죠 ㅋ

300x250
반응형
300x250
반응형

 

현재시간 기준으로 이전 날짜를 구해봅시다.

 

 

현재시간 구하기

$dt = date("Y-m-d H:i:s", time());
echo $dt;

 

1주일 전 구하기

 $dt = date("Y-m-d H:i:s", strtotime("-1 week", time()));
 echo $dt;

 

1달 전 구하기

$dt = date("Y-m-d H:i:s", strtotime("-1 month", time()));
echo $dt;

 

1년 전 구하기

$dt = date("Y-m-d H:i:s", strtotime("-1 year", time()));
echo $dt;

 

나머지 시, 분, 초를 더하거나 빼고싶으시면

strotime 함수 안에

+1 hours

-1 hours

 

+10 minitues

+1 seconds

 

이런식으로 넣으시면 됩니다.

 

 

! 만약  현재시간에 -3개월 한후 +30분을 더하고 싶다면?

(아래 두개는 결과가 같습니다.)  time() 에 해당하는 부분을 strtotime으로 한번더 대체하면 됩니다.

당연히 가독성은 (2) 번이 좋겠죠

 

(1)

$dt = date("Y-m-d H:i:s", strtotime("+30 minutes", strtotime("-3 month", time())));
echo $dt;

(2)

$time_pre_3month = strtotime("-3 month", time());
$dt = date("Y-m-d H:i:s", strtotime("+30 minutes", $time_pre_3month));
echo $dt.'<br>';

 

참 쉽죠 ㅋ

300x250
반응형
300x250
반응형

 

아래와 같이 올림, 버림, 반올림은 다른언어와 마찬가지로 똑같이 사용할 수 있습니다.

$val = 20.123

//올림
echo ceil($val); // 21

//내림
echo floor($val); // 20

//반올림
echo round($val); // 20

 

그리고 round는 소수점 자리를 정할수 있는데

echo round($val, 2);

위와 같이 round 함수에 round(변수명, 소수점 자리수) 소수점자리수를 넣으면

쉽게 끊어서 표시 할 수 있습니다.

 

c의 %.2f 이런느낌이죠

300x250
반응형
300x250
반응형
foreach($array_data as $data1)
{
	echo $data1->company;
}

 

PHP에서는 아래와 같이 클래스를 선언 하며, 생성 자에는 클래스명 대신 __construct 를 써줍니다.

class ListData
{
	public $rank;
	public $company;
	public $cnt;
	public $per;

	function __construct($rank, $company, $cnt, $per)
	{
		$this->rank = $rank;
		$this->company = $company;
		$this->cnt = $cnt;
		$this->per = $per;
	}	
}

 

아래에서는 클래스 객체를 선언 후 배열에 추가해 주는 코드 입니다.

$array_data = array();

$list_data1 = new ListData(1,"회사1",3,50);
array_push($array_data, $list_data1);

$list_data2 = new ListData(2,"회사2",2,30);
array_push($array_data, $list_data2);

 

array_data 라는 배열을 만들고

list_data1, list_data2 라는 객체를 만들어서 array_push 로 배열에 추가 하였습니다.

 

이제 추가된 배열을 foreach로 가져와서 company 변수를 출력해보겠습니다.

 

foreach(배열 변수명 as 반환될 객체명)

{

 

}

foreach($array_data as $data1)
{
	echo $data1->company;
}

 

300x250
반응형

+ Recent posts