PHP์—์„œ DBMS๋ฅผ ์—ฐ๋™ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•, PDO

๋ฐ˜์‘ํ˜•

์›น ์‚ฌ์ดํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋‹ค๋ณด๋ฉด, DBMS์™€ ์—ฐ๋™ํ•ด์•ผ ๋  ์ผ์ด ์ƒ๊น๋‹ˆ๋‹ค. ํŠนํžˆ ๋™์  ์‚ฌ์ดํŠธ ๋“ฑ์˜ ๊ฒŒ์‹œํŒ์„ ์ด์šฉํ•˜๋Š” ์œ ํ˜•์˜ ์‚ฌ์ดํŠธ๋“ค์€ ๋”์šฑ ๊ทธ๋Ÿฌํ•˜์ง€์š”.


์ตœ๊ทผ ์ œ๊ฐ€ ์ƒˆ๋กœ์šด ๋‹จ์ผ ํŽ˜์ด์ง€ ๊ตฌ์ถ•์„ ํ•˜๊ฒŒ ๋˜๋ฉด์„œ, PHP์—์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ DBMS์™€ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜๋Š”๋ฐ, ์ด ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ๋ณด๋‹ค ์œ ์šฉํ•˜๋‹ค ์ƒ๊ฐํ•˜์—ฌ ํฌ์ŠคํŒ…ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.



๊ธฐ์กด ๋ฐฉ์‹์˜ DBMS ์—ฐ๋™

์ €๋Š” PHP ์–ธ์–ด๋ฅผ C ์–ธ์–ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋˜์–ด ์žˆ์–ด์„œ ์ ˆ์ฐจ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋”ฉํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.


<?
   $hostname = 'localhost';
   $db_id = 'neonkid';
   $db_pw = 'password';

   $db_conn = mysql_connect($hostname, $db_id, $db_pw);
   mysql_set_charset('utf8',$link);   // ์„ ํƒ ์‚ฌํ•ญ,,
   if(!$db_conn) {
      die('connect error !! ', mysql_error());
   }
?>

์œ„์™€ ๊ฐ™์ด ์ ˆ์ฐจ ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑํ•  ๋•Œ๋Š” ์„ ํƒ์ ์œผ๋กœ DB ์„œ๋ฒ„ ์—ฐ๊ฒฐ์— ์‹คํŒจํ–ˆ์„ ๊ฒฝ์šฐ, ์กฐ๊ฑด๋ฌธ์„ ์ž‘์„ฑํ•˜์—ฌ ์ฒ˜๋ฆฌํ•ด์•ผ ํ–ˆ์œผ๋ฉฐ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด php_fpm socket ์„œ๋ฒ„์—์„œ ์ง์ ‘ ์˜ค๋ฅ˜๋ฅผ ๋ฟœ๋Š”๋ฐ, ์›ฌ๋งŒํ•ด์„œ die ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ๋ฆฌ์†Œ์Šค๋ฅผ ์ค„์ด๋Š” ๋ฐฉ์ฑ…์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.


๋˜ํ•œ ์ง€๊ธˆ ์œ„ ์ฝ”๋“œ๋Š” MySQL์„ ์‚ฌ์šฉํ•˜๋Š” DB Server๋ฅผ ์—ฐ๋™ํ•  ๋•Œ ์“ฐ๋Š” PHP ํ•จ์ˆ˜์ด๊ณ , ๋‹ค๋ฅธ DB ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค๋ฅธ ์ „์šฉ ํ•จ์ˆ˜๋ฅผ ์จ์•ผ ํ•˜๋Š” ๋‹จ์ ์ด ์žˆ์–ด, ์ž์‹ ์ด ๋งŒ์•ฝ DBMS๋ฅผ MariaDB๋‚˜ MySQL 5.6 ๋ฒ„์ „ ์ด์ƒ ๋˜๋Š” ๊ทธ ์™ธ์˜ DBMS๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด๋‚˜ ๊ต์ฒดํ•˜๋Š” ๊ฒฝ์šฐ, ๋ชจ๋“  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๊ณ ์ณ์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.



์ƒˆ๋กœ์šด ๋ฐฉ์‹์˜ DBMS ์—ฐ๋™

์ œ๊ฐ€ Python ์–ธ์–ด๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด์„œ, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์— ๋ˆˆ์„ ๋Œ๋ ธ๋Š”๋ฐ์š”. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์šฐ์—ฐํžˆ PHP์—์„œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์ƒˆ๋กญ๊ณ  PHP ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ๋„ ๊ถŒ์žฅํ•˜๋Š” DBMS ์—ฐ๋™ ๋ฐฉ๋ฒ•์„ ํ„ฐ๋“ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


<?
   $db_id = 'neonkid';
   $db_pw = 'password';

   try {
       $pdo = new PDO('mysql:host=hostname;dbname=db_name, $db_id, $db_pw);
       $pdo->exec("SET CHARACTER SET utf8");  // ์„ ํƒ ์‚ฌํ•ญ,,
       $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   } catch(PDOException $ex) {
           echo "Failed DBMS connection". $ex->getMessage();
   }
?>

PHP 5.5 ๋ฒ„์ „์—์„œ๋ถ€ํ„ฐ๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™˜๊ฒฝ์„ PDO(PHP Data Objects)๋กœ ํ†ตํ•ฉ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. ์ด์ œ๋Š” ์ž์‹ ์ด MySQL์„ ์“ฐ๊ธฐ ์œ„ํ•ด ๊ตณ์ด mysql์šฉ ํ•จ์ˆ˜๋ฅผ ์“ฐ์ง€ ์•Š์•„๋„ PDO์—์„œ ์ฃผ์†Œ ํ˜•์‹๋งŒ์œผ๋กœ PostgreSQL์ด๋‚˜ Oracle DBMS, SQLite ๋“ฑ์„ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๋˜ํ•œ PDO๋Š” ๊ธฐ์กด API ๋ฐฉ์‹๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๋Ÿฐํƒ€์ž„ ํ˜•์‹์˜ ๋ชจ๋“ˆ๋Ÿฌ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด์„œ PHP ์—”์ง„์„ ๊ตณ์ด ์ปดํŒŒ์ผํ•˜๊ฑฐ๋‚˜ ์žฌ์„ค์น˜ํ•˜์ง€ ์•Š์•„๋„ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํ•˜์ง€๋งŒ PDO๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด PHP ์„ค์ •์—์„œ PDO ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.



PDO ์‚ฌ์šฉํ•ด๋ณด๊ธฐ

PDO๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด php.ini ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. 



์œ„์— ๋Œ€ํ•œ ๋ชจ๋“  ์ฃผ์„์„ ํ•ด์ œํ•ด์ค๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ž์‹ ์ด Apache 2.x๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด php.ini ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๊ณ , nginx ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ php-fpm์„ ๋Œ๋ฆฌ๊ณ  ์žˆ๋‹ค๋ฉด, conf.d ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ๊ฐ pdo ์„ค์ • ํŒŒ์ผ์„ ํ™•์ธํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.


๋ชจ๋“  ํ™•์žฅ ๊ธฐ๋Šฅ์ด ์—ฐ๋™๋˜์–ด์กŒ๋‹ค๋ฉด, PHP ๋ฐ๋ชฌ์„ ์žฌ์‹œ์ž‘ํ•ด์ค๋‹ˆ๋‹ค.

# systemctl restart php-fpm.service 


์ด์ œ PDO ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง์ ‘ DBMS๋ฅผ ์—ฐ๋™ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments