เทคนิคในการบันทึกความเร็วของ Web Browser มาเก็บไว้ที่ Web Server

ต่อจาก วิธีพัฒนา Squirrelmail Plugin – กรณี pagespeed เทคนิคการส่งค่าจาก PHP ให้ JavaScript เมื่อรู้ระยะเวลาที่ Web Browser ประมวลผลแล้ว ต่อไปก็ต้องการเก็บข้อมูลต่างๆมาเก็บที่ Web Server เพื่อบันทึกเก็บไว้วิเคราะห์ต่อไป สามารถทำได้โดยการใช้ JavaScript ส่งค่่าผ่าน HTTP GET Method มายัง PHP เริ่มจากสร้าง PHP  ให้ชื่อว่า getdata.php สำหรับรับค่าจาก JavaScript ที่ทำงานจาก Web Browser ของผู้ใช้ ดังนี้ <?php   $data=$_GET[‘data’];   $h = fopen(‘/var/log/userview.log’, ‘a’);   fwrite($h, $data . “\n” );   fclose($h) ?> สมมุติ เรียกใช้ผ่าน URL ต่อไปนี้ http://myserver.com/getdata.php?data=xxyyzz ก็จะเอาค่า xxyyzz เขียนใส่ไฟล์ /var/log/userview.log และต่อท้ายไปเรื่อยๆ ในฝั่งของ JavaScript ให้เขียนโค๊ดดังนี้ <SCRIPT LANGUAGE=”JavaScript”> var xmlhttp; var url; var data; data=servertime + “:” + second + “:” + total ; url=”http://myserver.com/getdata.php?data=” + data; if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest(); else xmlhttp = new ActiveXObject(“Microsoft.XMLHTTP”); xmlhttp.open(\’GET\’,url, true); xmlhttp.send(); </script> เท่านี้ก็จะสามารถเก็บค่าต่างๆจาก Web Browser มาไว้ที่ Web Server ได้

Read More »

เทคนิคการส่งค่าจาก PHP ให้ JavaScript

ต่อจากตอนที่แล้ว “วิธีพัฒนา Squirrelmail Plugin – กรณี pagespeed” จากการพัฒนา pagespeed plugin สำหรับ Squirrelmail เพื่อแสดงให้ผู้ใช้เห็นถึง “ความเร็ว” ในการประมวลผลจากฝั่ง server ได้แล้ว ต่อไปเราต้องการเอาดูว่า  “ความเร็ว” ในการเดินทางและแสดงผลบน Web Browser ของผู้ใช้ เป็นเท่าไหร่ ทำได้โดยการใช้งาน JavaScript จับเวลาการทำงาน โดยเขียนโค๊ดต่อไปนี้ ใน ฟังก์ชั่น pagespeed_top echo ‘ <SCRIPT LANGUAGE=”JavaScript”> beforeload = (new Date()).getTime(); </script> ‘; และส่วนนี้ไปในฟังก์ชั่น pagespeed_bottom echo ‘ <SCRIPT LANGUAGE=”JavaScript”> afterload = (new Date()).getTime(); seconds = (afterload-beforeload)/1000; document.write(“Browser Speed: ” + seconds + ” s”); </script> ‘; เท่านี้ก็จะทราบระยะเวลาในการเดินทางและแสดงผลเสร็จบน Web Browser แล้วแสดงผลต่อผู้ใช้ ต่อไปหากต้องการ รวมเวลาทั้งสิ้นที่ผู้ใช้ต้องรอ ตั้งแต่การทำงานที่ Squirrelmail จนกระทั้ง แสดงผลเสร็จ ก็ต้องเอาค่าตัวแปรจาก PHP ที่ชื่อว่า $showtime มาบวกกับตัวแปรของ JavaScript ที่ชื่อว่า seconds จะส่งค่าจาก PHP ให้ JavaScript อย่างไร ??? ดูเหมือนยาก แต่จริงๆแล้ว ก็เพียงแค่ให้ PHP แสดงผลเป็นตัวแปรของ JavaScript เท่านั้น ก็สามารถทำให้ JavaScript เอาไปใช้งานต่อได้แล้ว ดังนี้ echo ‘ <SCRIPT LANGUAGE=”JavaScript”> servertime = ‘ . $showtime . ‘;</SCRIPT>’ ; แล้วปรับแต่งโค๊ดใน pagespeed_bottom ข้างต้นเป็น echo ‘ <SCRIPT LANGUAGE=”JavaScript”> servertime = ‘ . $showtime . ‘;</SCRIPT>’ ; echo ‘ <SCRIPT LANGUAGE=”JavaScript”> afterload = (new Date()).getTime(); seconds = (afterload-beforeload)/1000; document.write(“Browser Speed: ” + seconds + ” s”); total=servertime + seconds; document.write(“Total:” + total + ” s”); </script> ‘; เป็นตัวอย่างเทคนิคในการส่งค่าระหว่างการคำนวนของ PHP และ JavaScript เบื้องต้น ติดตามต่อไปในเรื่องของ “เทคนิคในการบันทึกความเร็วของ Web Browser มาเก็บไว้ที่ Web Server”

Read More »

วิธีพัฒนา Squirrelmail Plugin – กรณี pagespeed

Squirrelmail เป็น IMAP Client Webmail แบบมาตราฐาน ทำงานบน PHP ซึ่งติดตั้งง่าย ใช้งานได้รวดเร็ว ไม่ต้องกังวลเรื่องความเข้ากันได้กับ Web Browser ของผู้ใช้หลากหลาย เพราะไม่ค่อยมีการใช้งานพวก JavaScript มีความง่ายในการต่อขยายความสามารถ โดยผู้พัฒนาเปิดให้เขียน Plugin ได้ง่าย โดยไม่ต้องแก้ไข Code ของระบบโดยตรง ด้วยวิธีการเสียบ Code ผ่านจุดที่กำหนด ที่เรียกว่า “Hook” ทำให้ Plugin ที่เขียนขึ้น สามารถใช้งานต่อไปได้ แม้มีการปรับรุ่นของ Squirrelmail ต่อไป ตัวอย่างการเขียน Squirrelmail Plugin เพื่อแสดงความเร็วในการประมวลผลในแต่ละส่วนของ Squirrelmail ใช้ชื่อว่า pagespeed (ทำงานบน Squirrelmail 1.4.x) สร้าง folder ชื่อ pagespeed สร้างไฟล์ index.php เอาไว้เฉยๆ สร้างไฟล์ setup.php , ต่อไปนี้ จะกล่าวถึงการเขียนโค๊ตในไฟล์นี้ สร้าง function แรกที่จะเสียบเข้ากับ Hook ต่างๆ ชื่อว่า squirrelmail_plugin_init_pagespeed $starttime=0; function squirrelmail_plugin_init_pagespeed() { global $squirrelmail_plugin_hooks; // Code Go Here } ชื่อฟังกชั่นต้องเป็น squirrelmail_plug_init_xxx() โดยที่ xxx ต้องตรงกับชื่อ folder ในที่นี้คือ pagespeed ต่อไป บอกให้ Squirrelmail รู้ว่า เราจะเสียบฟังก์ชั่น “pagespeed_top” และ “pagespeed_bottom” ที่่จะเขียนต่อไป ไว้ที่ Hook ใดบ้าง ในที่นี้ จะเสียบไว้ที่หน้า Login บริเวณ Hook ชื่อว่า login_top และ login_bottom, จะเขียนโค๊ดดังนี้ใน function squirrelmail_plugin_init_pagespeed ดังนี้ $squirrelmail_plugin_hooks[‘login_top’][‘pagespeed’] = ‘pagespeed_top’; $squirrelmail_plugin_hooks[‘login_bottom’][‘pagespeed’] = ‘pagespeed_bottom’; รูปแบบการเขียนคือ $squirrelmail_plugin_hooks[‘ตำแหน่งที่จะเสียบ’][‘ชื่อ plugin’] = ‘ชื่อฟังก์ชั่น’; ต่อไปมาเขียนรายละเอียดของฟังก์ขั่น pagespeed_top และ pagespeed_bottompagespeed_top ทำหน้าที่ดูเวลาเริ่มต้น มีรายละเอียดดังนี้ function pagespeed_top() { global $starttime; $gentime = microtime(); $gentime = explode(‘ ‘,$gentime); $gentime = $gentime[1] + $gentime[0]; $starttime=$gentime; } ส่วน pagespeed_bottom ทำหน้าที่ ดูเวลาสิ้นสุด แล้วคำนวนเวลาที่ใช้ไป จากนั้น ก็แสดงผลการคำนวนได้ function pagespeed_bottom() {  global $starttime; $gentime = microtime();   $gentime = explode(‘ ‘,$gentime);   $gentime = $gentime[1] + $gentime[0];   $pg_end = $gentime;   $totaltime = ($pg_end – $starttime);   $showtime = number_format($totaltime, 4, ‘.’ , ”); echo ‘Speed: ‘ . $showtime . ‘ s’ ; } เท่านี้ก็ได้ plugin

Read More »

กิจกรรม CoP PSU sysadmin KM1 “การทำงานกับ PSU Passport”

กิจกรรม CoP PSU sysadmin KM1 “การทำงานกับ PSU Passport” วันที่ 21 ธ.ค. 55 เวลา 09.30 – 14.00 น. มีอาหารเที่ยงเลี้ยงด้วย พบกันที่ห้อง 102 ศูนย์คอมพิวเตอร์ ม.อ. หาดใหญ่ครับ กำหนดการ เวลา 09.30 – 10.00 น. ลงทะเบียนและรับประทานอาหารว่าง เวลา 10.00 – 12.00 น. แลกเปลี่ยนเรียนรู้ หัวข้อ “การทำงานกับ PSU Passport” เวลา 12.00 – 13.00 น. รับประทานอาหารเที่ยงร่วมกัน เวลา 13.00 – 14.00 น. ตอบปัญหาและข้อซักถาม นำเสนอโดย คุณจตุพร ชูช่วย แอดมินทีมเซิร์ฟเวอร์ ศูนย์คอมพิวเตอร์ ม.อ. หาดใหญ่ รอบนี่้ผมคิดว่า คุยกันไม่ต้องเร่งรีบมาก ในช่วงแรก แล้วเบรคพักเที่ยง ทานข้าวด้วยกัน แล้วถ้ายังมีคำถามไว้ในช่วงบ่ายอีก 1 ชั่วโมงครับ (ดูรายชื่อผู้ที่แจ้งเข้าร่วม) หัวข้อที่จะเล่าและตอบคำถาม 1. โครงสร้างของระบบ PSU Passport 2. การนำเข้าข้อมูลเพื่อสร้าง Account บน PSU Passport 3. บริการของระบบ PSU Passport (ldap/ldaps,web service,ระบบเปลี่ยนรหัสผ่าน) 4. สิทธิการเข้าถึงชั้นความลับของ PSU Passport (ระบบความปลอดภัยของข้อมูล) 5. ข้อกำหนดใช้บริการ PSU Passport (พรบ. คอม 50) 6. ระบบจัดการข้อมูลบน PSU Passport (AdsAdmin) 7. การออก Account ในกลุ่มอื่น ๆ (Guest,VIP,LAB) 8. ตัวอย่างการเข้าใช้งานบน Application ต่าง ๆ (LDAP,Web Service) 9. ระบบลงทะเบียน Server Authen ในอนาคต 10. แนวทางการเผยแพร่ความรู้ในอนาคต 11. ตอบคำถามกวนใจใคร ช่วง ตอบคำถามกวนใจใคร เช่น ผู้ใช้: อยากให้ศูนย์คอมฯมี database view ของ PSU Passport เพื่อให้คณะคอนเนคเข้ามาได้ แอดมินศูนย์: – ข้อมูลอะไรครับ หากเฉพาะ user/password ก็ใข้ passport ได้อยู่แล้ว ? – หากเป็นข้อมูลบุคลากรให้ติดต่อการเจ้าหน้าที่มหาวิทยาลัยเพื่อขอสิทธิ์เข้าถึงข้อมูลครับ – และหากเป็นข้อมูลนักศึกษาให้ติดต่อทะเบียนกลางเพื่อขอสิทธิ์เข้าถึงข้อมูล ครับ ผู้ใช้: ถ้าให้ 0com เป็นตัวกลาง ประสานงานให้ แบบ one stop service ได้มั้ยครับ แบบว่าไม่ต้องไปติดต่อหลายที่ แอดมินศูนย์: ไม่ได้ครับ เพราะเราไม่ใช่เจ้าของข้อมูล เป็นแค่ที่เก็บ ต้องขอเจ้าของครับ ผู้ใช้: สามารถทำให้ antivirus แต่ละค่าย สามารถ update อัตโนมัติได้โดยไม่ต้อง authen psu passport ได้ไหม เพราะโดยปกติเครื่องคอมขึ้นมา โปรแกรม antivirus จะทำการ update ให้อัตโนมัติ เครื่องคอมผู้ใช้ ถ้าไม่ได้ authen psu passport ผ่านหน้าเว็บทันที จะขึ้น โปรแกรม antivirus จะเตือน update failed ผู้ใช้: ไม่แน่ใจว่า ตอนนี้ ศูนย์คอมเปิดเป็น web service

Read More »