สอบถาม การดึงข้อมูล ครับ ทำแบบนี้ ok เปล่า

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

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

tun20092009

สอบถาม การดึงข้อมูล ครับ ทำแบบนี้ ok เปล่า

Post by tun20092009 » 17/03/2010 1:47 pm

ปกติหน้าแรกของเว็บ จะโชว์นู้นโชว์นี้ ที่ต้องดึงจาก ฐานข้อมูลมาทั้งนั้น
ถ้าคนน้อยๆไม่ค่อยจะมีปัญหาเท่าไร แต่ถ้าเว็บคนเยอะมากๆ
คิดว่าอนาคตเว็บคนเป้นหมื่นคน

ไม่รู้ผมทำถูกหรือเปล่าหรือมีวิธีที่ดีกว่านี้ลองแนะทีครับ

ผมใช้ fopen เขียน file save เป็น .html เห็บไว้ในโฟเดอร์ ที่สร้างขึ้น
เช่น html/htmlex.html < นี้คือ file ที่เขียนจาก fopen htmlex.html

โดย ที่ไม่ได้ดึงจากฐานข้อมูลมาเลยแค่ดึง ฐานข้อมูลมาเขียน ลงfopen แล้วบันทึกเป็น .html เท่านั้น บันทึกไม่ได้บันทึกหมดทุก record นะครับ ในที่นี้บันทึกแค่ 10 record

ที่นี้ก็มาทำหน้าแรก ตรงส่วนที่ต้องการใช้ข้อมูลผมก็ include เข้ามา

เวลาอับเดต ผมจะสร้างไว้1หน้าเป็นหน้าเขียน File หน้านี้ผมสรมารถเข้าได้คนเดียว

สรุปหน้าแรกของผมฐานข้อที่ดึงจาก sql ตรงๆจะไม่มีเลย มีแต่ file html เท่านั้นเอง
หน้าอื่นก็ใช้ฐานข้อมูล sql ตามปกติ หน้าที่ใช้ฐานข้อมูลผมจะพยายามดึงมาให้น้อยที่สุดเท่าที่จะทำได้

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 23750
Joined: 22/09/2008 6:18 pm
Contact:

Re: สอบถาม การดึงข้อมูล ครับ ทำแบบนี้ ok เปล่า

Post by mindphp » 17/03/2010 2:14 pm

ถ้าข้อมูลไม่มีการอัพเดด และไฟล์ที่เก็บไว้ไม่ใหญ่มาก ก็เป็นวิธีที่ดีครับ
เป็นการทำ cache แบบง่ายๆ :-D
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

tun20092009

Re: สอบถาม การดึงข้อมูล ครับ ทำแบบนี้ ok เปล่า

Post by tun20092009 » 17/03/2010 2:36 pm

ถามอีกนิด cache กับที่ ผมเสนอมา ต่างกันเปล่าครับ คิดว่าหลักการคล้ายๆกัน

User avatar
secivon
PHP Full Member
PHP Full Member
Posts: 35
Joined: 24/03/2009 5:15 pm

Re: สอบถาม การดึงข้อมูล ครับ ทำแบบนี้ ok เปล่า

Post by secivon » 17/03/2010 2:58 pm

mindphp wrote:ถ้าข้อมูลไม่มีการอัพเดด และไฟล์ที่เก็บไว้ไม่ใหญ่มาก ก็เป็นวิธีที่ดีครับ
เป็นการทำ cache แบบง่ายๆ :-D
รบกวนถามต่อ 2-3 ข้อครับ :-D

1.จากที่ highlight ไว้ ถ้าสุดท้ายแล้วขนาดของ content มันจำเป็นต้องใหญ่จริงๆ
ผมคิดว่าอ่านเอาจาก file system ก็ยังเร็วกว่า retrieve จาก database ไม่ใช่หรือครับ
หรือคุณ mindphp เกรงว่าจะมีผลเรื่องการ lock file เพื่อ get content หรือครับ

2. กรณีที่จะมีปัญหากับการอ่าน content จาก file ของกรณี จขกท.นี่
ต้องมี concurrent ซักระดับไหนครับ (ส่วนตัวคิดว่า page view หลักหมื่น(ต่อ ชม.?)นี่ธรรมดามากๆ)
เพราะ เท่าที่แกะ opensource ส่วนใหญ่ดู ก็ใช้ concept เดียวกันคือมี shared configuration file ร่วมกัน
การจะ view หน้าใดๆ ยังไง server ก็ต้องมา execute configure file ตัวนี้ ยังไม่ค่อยมีปัญหาเลย
แถมกรณี จขกท. ก็เป็นการเอา content มาใช้ โดยไม่ต้องมีการ parse ไป execute อีกต่างหาก
น่าจะเร็วกว่าด้วยซ้ำ

3. ถ้า content ของ จขกท. เป็น static text วิธีที่ดีที่สุดในการเอามาใช้งานคืออะไรครับ
- include / require โดยตรง
- file_get_contents() / fopen / .... filesystem function ทั้งหลาย
- อื่นๆ



ขอบคุณครับ :-D
"อย่าเอาแต่โทษเด็ก ถ้าเด็กมันจะห่วย ดูตัวเองบ้างว่าทำบ้านเมืองไว้เป็นยังไง"

tun20092009

Re: สอบถาม การดึงข้อมูล ครับ ทำแบบนี้ ok เปล่า

Post by tun20092009 » 17/03/2010 5:10 pm

น่าสนใจ รอ ฟังคำตอบด้วยคนครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 23750
Joined: 22/09/2008 6:18 pm
Contact:

Re: สอบถาม การดึงข้อมูล ครับ ทำแบบนี้ ok เปล่า

Post by mindphp » 17/03/2010 8:39 pm

ไฟล์ใหญ่มาก ถ้าเกินขนาด file system ที่ระบบเปิดได้ php ก็เปิดมาไม่ได้ครับ เท่าที่เคยเจอปัญหา คือ 250M
แต่ถ้า gen หน้าเดียวเป็นไฟล์คงไม่ใหญ่ขนาดนั้นใช่ไหมครับ :-D

อย่างไรก็ตามถ้าไฟล์ ใหญ่ๆ อย่าลืมเรื่องเวลาในการอ่านไฟล์เข้่า memory และการใช้ CPU ของ ระบบด้วยนะครับ
ผมเคยเจอ วิธี ของ AdoDB เค้าทำ CacheExecute เค้าจะทำไฟล์ไม่ใหญ่ แต่ละไฟล์ 10K (ถ้าจำไม่ผิดนะครับ)


ข้อ 2 ถ้าจะเอาแบบเร็วที่สุด ก็ืทำ APC หรือ ทำ Memcache ข้อมูลที่ดึงมาจากฐานข้อมูลไว้เลยครับ
ข้อ 3 ถ้า content เป็น text ธรรมดา (ไม่ต้องประมวลผลแล้ว)
ต้องแยก ระหว่าง ตระกูล include (include,require, _once) กับ Filesystem function นะครับ
ตระกูล include มันจะอ่านไฟล์และตัวแปล, function, class ที่อยู่ในไฟล์ที่มัน include มาใช้ได้ เหมาะสำหรับไฟล์ php หรือ text file ที่มีโค้ด เพื่อเอามาประมวลผล (ไม่ควรเอามาทำ ระบบ cache เพราะ ถ้าไปอ่านไฟล์ที่ถูกเขียนโดยใครก็ได้ ซึ่งอาจจะถูกแทรกโค้ด php หรืำอคำสั่งระบบเข้าไปจะไม่ปลอดภัย)
Filesystem function
- file_get_contents จะเร็วกว่า fread นิดหน่อย

จริงๆ ลองทำ benchmark ในระบบของเราเองก็ได้ครับ เพราะปัจจัยการเลือก ชนิดของ Filesystem ของ OS ก็มีส่วน

สรุปถ้าจะเอาแบบเร็วๆ
1. ถ้ามี server เป็นของตัวเองและมี ram เยอะๆ APC ไฟล์php และ Memcache ข้อมูลจากฐานข้อมูล เร็วที่สุดครับ
2. ปรับแต่ง Server ไม่ได้ก็ cache ใส่ไำฟล์ เอาใช้ โดย file_get_contents (แต่ผมลองแกะโค้ด ระบบ cache file ส่วนใหญ่เค้าใช้ fread กัน คงเพราะจัดการกับข้อมูลที่อ่านมาใช้ได้ง่ายกว่า)

User avatar
secivon
PHP Full Member
PHP Full Member
Posts: 35
Joined: 24/03/2009 5:15 pm

Re: สอบถาม การดึงข้อมูล ครับ ทำแบบนี้ ok เปล่า

Post by secivon » 18/03/2010 3:18 pm

ขอบคุณ คุณ mindphp ครับ :-D

ผมไม่เคยทำ benchmark แบบจริงๆจังเลยแฮะ
ไม่ทราบว่ามี link หรือ tool ในการทำ benchmark แนะนำไหมครับ :-D
"อย่าเอาแต่โทษเด็ก ถ้าเด็กมันจะห่วย ดูตัวเองบ้างว่าทำบ้านเมืองไว้เป็นยังไง"

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 23750
Joined: 22/09/2008 6:18 pm
Contact:

Re: สอบถาม การดึงข้อมูล ครับ ทำแบบนี้ ok เปล่า

Post by mindphp » 20/03/2010 12:03 am

ในเว็บ pear ของ php จะมีชุดหนึ่งที่ Benchmark อยู่ลองดูที่
http://pear.php.net

และอีกตัวที่ผมชอบคือ Xdebug
http://www.xdebug.org
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - PHP”

Who is online

Users browsing this forum: No registered users and 101 guests