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
반응형

 

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

 

 

현재시간 구하기

$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
반응형
300x250
반응형

이 글을 보시는 분들은 다른사이트에서 

session.cookie_lifetime  

session.cache_expire 

관련 변수를 변경하였는데 세션유지가 안되서 이 글을 보고있을 껍니다.

 

 

세션 설정 외에도 GC(c#의 garbage collection) 이라고 하는 동작이 있습니다.

관련 설정 변수는 아래 3개 입니다. 아마 아래와 같은 기본값으로 설정되어 있을껍니다.

session.gc_probability = 0

session.gc_divisor = 1000    <-- 1/1000 으로 0.1% 확률로 쿠키파일이 청소 됩니다.

session.gc_maxlifetime = 0

 

 

아래와같이 수정해보세요

저는 etc/php/5.6/apache2 경로에 있는 php.ini를 수정하겠습니다.

 

아래와 같이 vi 편집기로 php.ini 파일을 열어줍니다.

 

session.cookie_lifetime = 0

session.cache_expire = 14400  (분단위)

session.gc_maxlifetime = 65535    <-- 대략 16시간 마다 쿠키파일이 청소되게 하였습니다. (초단위)

 

 

:wq! 로 수정 후 나와서

아래와 같이 꼭 아파치를 재시작 해줘야 합니다.

service apache2 restart

 

 

세션 30일 저장 만든 php 설정 값 입니다.

 

 

 

자동 로그인 처리(저장된 세션 쿠키 사용)

 

로그인 시 savesession 이라는 쿠키를 만들어서 PHPSESSIONID 값을 저장 합니다.

이후 브라우저를 다시 켰을때 만약 savesession 쿠키 값이 있으면
저장했던 savesessino 쿠키 값으로 PHPSESSIONID 필드를 만들어서 값을 넣습니다.

이렇게 되면 서버에 세션(30일)이 남아있는한 무한 자동 로그인이 됩니다.

 

 

 

 

 

세션정보는 파일관리로 했을경우 아래 경로에 저장 됩니다.

/var/lib/php/sessions 

만약 세션설정이 실패 했다면, 이 경로의 파일들의 수정날짜를 보면 30분전 파일은 다 지워진걸 확인 할 수 있습니다.

 

php 소스에서 수정시에는 session_start 하는 코드에 입력되어야 합니다.

session_cache_limiter('private');
ini_set("session.cookie_lifetime", "0");
ini_set("session.cache_expire", "14400");
ini_set("session.gc_maxlifetime", "2592000");

session_start();

 

300x250
반응형

+ Recent posts