ปกติเวลาที่เราสร้าง field ใน
databaseเพื่อเก็บข้อมูล ที่เป็น
IP เราจะต้องสร้าง varchar(15) หรือบางคน ก็ใช้เป็น text สำหรับมือใหม่ ทำให้เปลืองพื้นที่มาก อย่างเช่น varchar ใช้ 16 bytes และ text ใช้ 17 bytes กันเลยทีเดียวนี่ยังรวมที่เป็น UTF-8 เพราะว่าถ้าเป็น UTF-8 ก็จะใช้ประมาณ 51 byte ต่อ 1ip เลยทีเดียว ถือว่าเปลืองมากเพราะลองคิดดูว่าหากข้อมูลมีเป็นแสน ก็คงจะใช้พื้นที่ไม่น้อยเลย และถ้าเราแปลงให้เหลือแค่ 4 byte ต่อ 1 ip ก็จะประหยัดพื้นที่ไปได้มากเลยทีเดียวครับ
วิธีคือ php function ip2long($ip) และ long2ip($ip) ซึ่งจะทำหน้าที่แปลง ip ให้เป็น ตัวเลข และแปลงตัวเลขกลับมาเป็น ip โดย ฐานข้อมูลเราใช้เพียง int ซึ่งใช้เพียง 4 byte ต่อ 1 record เท่านั้น
อันนี้จะยกตัวอย่าง ที่แปลงจาก IP ไปเป็นตัวเลขโดยใช้ฟังกัน >>
$ip = ip2long($ip);
โค้ด: เลือกทั้งหมด
<?php
$ip = '1.37.57.181';
$ip1 = ip2long($ip);
echo "IP ที่เก็บลงฐานข้อมูลคือ > ".$ip1;
?>
ผลลัพธ์ IP ที่เก็บลงฐานข้อมูล
- 5555.png (4.95 KiB) Viewed 430 times
แล้วตอนเอากลับมาก็ใช้ ก็ให้ใช้ฟังก์ชัน >>
$ip = long2ip($ip); ก็จะกลับมาเป็น ip เหมือนเดิม
โค้ด: เลือกทั้งหมด
<?php
$ip = '19216821';
$ip1 = long2ip($ip);
echo "เลขที่แปลงมาจากเลขที่เก็บในฐานข้อมูล IP ของคุณคือ > ".$ip1;
?>
ผลลัพธ์เลขที่แปลงมาจากเลขที่เก็บในฐานข้อมูล IP
- 6666.png (7.18 KiB) Viewed 430 times
อ้างอิง
1 http://www.codeigniter.in.th/guide/technic_php_variable
2 https://www.php.net/manual/en/function.ip2long.php
3 http://meewebfree.com/site/general-web-technic/243-optimize-database-store-ip
ปกติเวลาที่เราสร้าง field ใน[url=https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/2055-database-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A323.html][b]database[/b][/url]เพื่อเก็บข้อมูล ที่เป็น[url=https://mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/3864-what-is-ipv4.html][b]IP[/b][/url] เราจะต้องสร้าง varchar(15) หรือบางคน ก็ใช้เป็น text สำหรับมือใหม่ ทำให้เปลืองพื้นที่มาก อย่างเช่น varchar ใช้ 16 bytes และ text ใช้ 17 bytes กันเลยทีเดียวนี่ยังรวมที่เป็น UTF-8 เพราะว่าถ้าเป็น UTF-8 ก็จะใช้ประมาณ 51 byte ต่อ 1ip เลยทีเดียว ถือว่าเปลืองมากเพราะลองคิดดูว่าหากข้อมูลมีเป็นแสน ก็คงจะใช้พื้นที่ไม่น้อยเลย และถ้าเราแปลงให้เหลือแค่ 4 byte ต่อ 1 ip ก็จะประหยัดพื้นที่ไปได้มากเลยทีเดียวครับ
[color=#FF0080]วิธีคือ[/color] php function ip2long($ip) และ long2ip($ip) ซึ่งจะทำหน้าที่แปลง ip ให้เป็น ตัวเลข และแปลงตัวเลขกลับมาเป็น ip โดย ฐานข้อมูลเราใช้เพียง int ซึ่งใช้เพียง 4 byte ต่อ 1 record เท่านั้น
อันนี้จะยกตัวอย่าง ที่แปลงจาก IP ไปเป็นตัวเลขโดยใช้ฟังกัน >> [color=#FF0040]$ip = ip2long($ip);[/color]
[code=php]
<?php
$ip = '1.37.57.181';
$ip1 = ip2long($ip);
echo "IP ที่เก็บลงฐานข้อมูลคือ > ".$ip1;
?>
[/code]
[color=#008000]ผลลัพธ์ [/color]IP ที่เก็บลงฐานข้อมูล
[attachment=1]5555.png[/attachment]
แล้วตอนเอากลับมาก็ใช้ ก็ให้ใช้ฟังก์ชัน >>[color=#FF0040] $ip = long2ip($ip);[/color] ก็จะกลับมาเป็น ip เหมือนเดิม
[code=php]<?php
$ip = '19216821';
$ip1 = long2ip($ip);
echo "เลขที่แปลงมาจากเลขที่เก็บในฐานข้อมูล IP ของคุณคือ > ".$ip1;
?>
[/code]
[color=#408000]ผลลัพธ์[/color]เลขที่แปลงมาจากเลขที่เก็บในฐานข้อมูล IP
[attachment=0]6666.png[/attachment]
อ้างอิง
1 http://www.codeigniter.in.th/guide/technic_php_variable
2 https://www.php.net/manual/en/function.ip2long.php
3 http://meewebfree.com/site/general-web-technic/243-optimize-database-store-ip