ฟังก์ชัน ip2long() - ใช้เก็บ IP ลงฐานข้อมูลทำให้ประหยัดพื้นที่

PHP Knowledge เป็น บอร์ดรวามความรู้ php เน้นบทความ แนวทางการเขียนโปรแกรม บันทึกกันลืม เพื่อให้สมาชิกได้เขียนความรู้ที่ตัวเองมีให้สมาชิกท่านอื่นๆ ได้ เข้ามาอ่าน และ ไว้อ่านเองกันลืมด้วย

Moderators: mindphp, ผู้ดูแลกระดาน

Patipat
PHP Super Hero Member
PHP Super Hero Member
Posts: 996
Joined: 10/06/2019 10:12 am

ฟังก์ชัน ip2long() - ใช้เก็บ IP ลงฐานข้อมูลทำให้ประหยัดพื้นที่

Post by Patipat »

ปกติเวลาที่เราสร้าง 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);

Code: Select all

<?php
$ip = '1.37.57.181';
$ip1 = ip2long($ip);

echo "IP ที่เก็บลงฐานข้อมูลคือ > ".$ip1;

?>
ผลลัพธ์ IP ที่เก็บลงฐานข้อมูล
5555.png
5555.png (4.95 KiB) Viewed 258 times

แล้วตอนเอากลับมาก็ใช้ ก็ให้ใช้ฟังก์ชัน >> $ip = long2ip($ip); ก็จะกลับมาเป็น ip เหมือนเดิม

Code: Select all

<?php
$ip = '19216821';
$ip1 = long2ip($ip);


echo "เลขที่แปลงมาจากเลขที่เก็บในฐานข้อมูล IP ของคุณคือ > ".$ip1;

?>
ผลลัพธ์เลขที่แปลงมาจากเลขที่เก็บในฐานข้อมูล IP
6666.png
6666.png (7.18 KiB) Viewed 258 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
Kor ma di kub. :)

  • Similar Topics
    Replies
    Views
    Last post

Return to “PHP Knowledge”

Who is online

Users browsing this forum: No registered users and 2 guests