프로젝트를 하는 도중에 데이터가 쌓이지 않게 하고 싶었습니다.
그래서 이벤트 스케줄러를 이용해서 오래된 데이터를 삭제하는법을 배웠습니다.
*지금 내용은 '사운드 측정 프로젝트'과 연관있습니다.
생략된 부분은 프로젝트 게시물을 봐주세요.
1. 먼저 다음과 같이 'sound' 테이블을 만들었습니다.
2. 그리고 test.php파일을 변경하였습니다.
<?php
//자신의 양식에 맞게 입력하세요
$mysql_hostname = 'localhost';
$mysql_username = '사용자 이름';
$mysql_password = '비밀번호';
$mysql_database = 'test';
$mysql_port = '3306';
$mysql_charset = 'utf8';
$dsn = 'mysql:host='.$mysql_hostname.';dbname='.$mysql_database.';port='.$mysql_port.';charset='.$mysql_charset;
$temp = $_GET['d']; //get방식으로 값을 받을겁니다.
try
{
$connect = new PDO( $dsn, $mysql_username, $mysql_password );
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO sound (sound, created) VALUES ('$temp', now())";
//sound 테이블안에 sound 자리에 get방식으로 받은 값을 넣을겁니다.
$connect->exec($sql);
echo "New record created successfully";
}
catch ( PDOException $e )
{
echo 'Connect failed : ' . $e->getMessage() . '';
return false;
}
$connect = null;
?>
3. mysql에 접속하여 이벤트를 활성화 시킵니다.
빨간 박스 부분을 입력합니다.
그리고 다음 명령어를 입력합니다.
mysql > create event if not exists test_refresh
-> on schedule
-> every 1 minute
-> starts current_timestamp
-> do
-> delete from test.sound2 where created <= subdate(now(), interval 1 minute);
이 코드는 test_refresh란 이벤트 이름으로
매 1분마다 실행하고
현재 시각부터 실행하고
'test'DB의 'sound2'테이블 안의 데이터중
현재로부터 1분이 지난 데이터는 삭제하는 이벤트입니다.
다음과 같은 화면이 나오면 성공입니다.
스케룰러는 phpmyadmin에서 확인 할 수 있습니다.
그리고 스케줄러를 끄고 킬 수 있습니다.
스케줄러 삭제는
drop event '이벤트 이름'
으로도 할 수 있습니다.
I wanted to keep the data from accumulating during the project.
So I learned how to delete old data using the Event Scheduler.
* This contents are related to 'sound measurement project'.
Please look at the project posts for omitted parts.
1. First we created the 'sound' table as follows.
2. You have modified your test.php file.
<? php
// fill in your form
$ mysql_hostname = 'localhost';
$ mysql_username = 'username';
$ mysql_password = 'Password';
$ mysql_database = 'test';
$ mysql_port = '3306';
$ mysql_charset = 'utf8';
$ dsn = 'mysql: host ='. $ mysql_hostname. '; dbname ='. $ mysql_database. '; port ='. $ mysql_port. '; charset ='. $ mysql_charset;
$ temp = $ _GET ['d']; // Get the value in get method.
try
{
$ connect = new PDO ($ dsn, $ mysql_username, $ mysql_password);
$ connect-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
$ sql = "INSERT INTO sound (sound, created) VALUES ('$ temp', now ())";
// In the sound table, we will put the value we got in the sound place in the get method.
$ connect-> exec ($ sql);
echo "New record created successfully";
}
catch (PDOException $ e)
{
echo 'Connect failed:'. $ e-> getMessage (). '';
return false;
}
$ connect = null;
?>
3. Connect to mysql and enable the event.
Enter the red box part.
Then type the following command:
mysql> create event if not exists test_refresh
-> on schedule
-> every 1 minute
-> starts current_timestamp
-> do
-> delete from test.sound2 where created <= subdate (now (), interval 1 minute);
This code is called 'test_refresh' by event name
Run every minute
Run from the current time
Of the data in the 'sound2' table of 'test'DB
The event that deletes data that is one minute older than the current time.
The following screen will be successful.
The scheduler can be found in 'phpmyadmin'.
And you can turn off and off the scheduler.
Deleting the scheduler
drop event 'event name'
Can also be done.
Comments
Post a Comment