Tip จากพี่ใหญ่ใจดี Google ครับ
ต้นฉบับ: http://code.google.com/speed/articles/optimizing-php.html
ผู้เขียน: Eric Higgins, Google Webmaster
PHP Performance Tips
BAD: $description = $_POST['description']; echo $description;
ปัญหาและการวิเคราะห์
วันนี้เจอ bug แปลก ๆ นั่นคือการใช้งานคำสั่ง MetabaseSetSelectedRowRange
ที่อยู่ใน Metabase library เพื่อจำกัดจำนวนของข้อมูลที่ต้องการ
แต่ดูเหมือนว่าจะใช้ไม่ได้ เพราะ query นานมาก นานเหมือน query มาทั้งหมด
จน timeout
โดยใน code นั้นก็เรียก MetabaseSetSelectedRowRange ตามปรกติ คือ
MetabaseSetSelectedRowRange($database, 0, $n);
โดย $n รับค่ามาจาก $_REQUEST ธรรมดา ๆ นี่แหล่ะ
$n = $_REQUEST['n'];
และไอ้ที่ทำให้มีปัญหาก็คือไอ้ $_REQUEST ธรรมดานี่แหล่ะ - -"
(เพราะ PHP จะถือว่าค่าใน $_REQUEST เป็นข้อมูลชนิด string)
ประวัติโดยย่อของ PHP
Resource:
http://php.net/history
PHP/FI
PHP เกิดมาจาก PHP/FI ซึ่งสร้างขึ้นโดย Rasmus Lerdorf ในปี 1995
โดยมีรากฐานมาจาก Perl ในระยะแรก Rasmus ใช้ PHP/FI ในเวบส่วนตัวของเขา
PHP/FI เป็นชื่อย่อมาจาก Personal Home Page / Form Interpreter ได้รับการ Opensource
โดย Rasmus เพื่อให้ developer จากทั่วโลกสามารถนำมันไปพัฒนาและใช้งานต่อได้
ในปี 1997 ได้มีการเขียน PHP/FI 2.0 และเริ่มได้รับความนิยมเพิ่มขึ้นเรื่อย ๆ
เดือนพฤศจิกายนของปีนั้น PHP/FI 2.0 ได้ถูก release ออกมาให้ได้ใช้งาน แต่ก็อยู่ในลักษณะของ beta ซะมาก
Reference:
http://framework.zend.com/manual/en/coding-standard.html
อ้างอิงจาก Zend Framework Coding Standard
PHP File Formatting (รูปแบบทั่วไป)
- File ที่มีแต่ PHP code ให้เริ่มด้วย <?php และไม่ต้องปิดด้วย ?>
เพื่อป้องกัน space ที่เกินอยู่หลัง ?> ต่อท้าย output โดยไม่ตั้งใจ
- ย่อหน้า 4 space -- ห้ามใช้ Tab
- ไม่ควรให้บรรทัดยาวเกิน 80 ตัวอักษร แต่ในกรณีที่จำเป็น 120 ตัวอักษรก็ยังพอได้อยู่
- ให้ปิดบรรทัดด้วยตัวปิดบรรทัดแบบ UNIX (0x0A)
Naming Conventions (การตั้งชื่อ)
- Class ให้ขึ้นด้วยตัวอักษรใหญ่
Environment
- Fedora 9
- Use yum and pecl
Installation Steps
0. (Optional) Prerequisite packages
yum install php-pear yum install php-devel
1. Install ImageMagick development package
yum install ImageMagick-devel
2. Install imagick extension
pecl install imagick
3. Add following line to /etc/php.ini
extension=imagick.so
4. (Optional) Reload web server by
/etc/rc.d/init.d/httpd reload
Command-line
phpdoc -o HTML:frames:earthli -d lib,common,app -t docs
-o = Output template
-d = Input directories
-t = target directory
เรื่องมีอยู่ว่า ตอนนี้ผมกำลังทำ Framework สำหรับ Web application development อยู่ครับ
และตระหนักว่างาน Document ไม่ใช่งานเล็ก ๆ เพราะต้องทำให้ Programmer ทั้งองค์กรทำความเข้าใจและทำงานด้วย Framework นี้ได้
(พูดเหมือนว่ามีคนเยอะมาก... แต่ก็เอาเถอะ เดี๋ยวก็เยอะเองแหล่ะ ทำไว้ก่อนน่าจะดี อิอิ)
จึงเป็นเหตุให้ต้องลองหาวิธีการทำ Source code document ที่มีประสิทธิภาพ ไม่ต้องการเขียนอะไรซ้ำซ้อน ฯลฯ สรุปว่าหาแบบดี ๆ หน่ะ
และผมเป็นพวกชอบเผื่อไว้ว่าอยากจะแก้ไขอะไรเอง จึงชอบหา project Opensource มาใช้งาน ซึ่งเมื่อลองหาดูก็พบที่ค่อนข้างถูกใจอยู่ 2 ตัวคือ