31.5.11

PHP command line ช่วยงานได้เยอะ




ช่วงนี้ ผมแทบไม่ได้เข้ามาอัพเดทบล๊อกนี้เท่าไหร่ เพราะกำลังง่วนอยู่กับการศึกษาไมโครคอนโทรลเลอร์ ผมว่ามันสนุกดี แล้วก็จับต้องได้ด้วย ติดตามกันได้ที่นี่ครับ www.123microcontroller.com

วันนี้ ผมเอาเทคนิคดีๆ ที่ผมใช้อยู่เป็นประจำในที่ทำงาน เนื่องจากงานของผม ในบางครั้งจะต้องยุ่งเกี่ยวกับการดึงดาต้าจาก Oracle เพื่อนำมาประกอบการพิจารณาทางสถิติอะไรบางอย่าง ผมมักจะเลือกที่จะใช้ภาษา PHP ที่ผมถนัดอยู่แล้ว เป็นตัวกลางในการติดต่อกับดาต้าเบส Oracle จริงๆ เราสามารถใช้ภาษา SQL สั่งคิวรี่ ข้อมูลจาก Oracle ผ่านโปรแกรม SQL Plus ได้ แต่ในบางครั้งข้อมูลที่เราต้องการดึงมานั้น มีการเชื่อมโยงข้อมูลต่างตารางกัน แล้วยังจะมีการคำนวณหรือกรองข้อมูลที่ไม่ต้องการออก หรือในบางครั้งอาจจะต้องมีการเปรียบเทียบข้อมูลทั้งหมดในแต่ละรอบก่อน แล้วจึงค่อยแสดงค่า ถ้าจะให้ทำการวนลูปด้วยภาษา SQL บอกได้คำเดียวว่ายาก (โดยเฉพาะ ผมก็ไม่เคยทำได้สักที)

ที่พูดมาทั้งหมดก็อยากจะบอกว่า ในบางครั้งการใช้ภาษาสคริปต์อย่างเช่น PHP ในการประมวลผลข้อมูล มันจะเป็นการง่ายกว่า การมานั่งเขียนภาษา SQL เพื่อให้ได้คำตอบที่ต้องการในการคิวรี ข้อมูลภายในครั้งเดียว แต่ภาษา SQL ก็ยังเป็นส่วนที่จำเป็นอยู่ดี ไม่สามารถทิ้งไปได้ แต่เราจะใช้ในการดึงข้อมูลดิบ แล้วทำการส่งต่อให้ PHP ทำการประมวลผลต่อไป ซึ่งถ้าใครถนัด PHP อยู่แล้ว จะทำให้มองภาพของการไหลของข้อมูลออกได้อย่างง่ายดาย

จริงๆ ผมน่าจะเขียนเรื่องการ config PHP ให้ติดต่อกับฐานข้อมูล Oracle ก่อนนะ แต่ในเมื่อเกริ่นนำไว้แล้ว ก็เลยกะว่า เอาไว้เขียนวันหลังแล้วกัน เพราะมี plan จะเขียนเรื่องนี้ ให้เพื่อนที่ทำงานดูอยู่แล้วหล่ะ

กลับมาเรื่องที่ตั้งใจจะนำเสนอกันดีกว่า ในกรณี ผมต้องการให้ script ของผมทำงานเป็นเวลา โดยตั้งเวลาผ่านโปรแกรม system scheduler ซึ่งผมใช้เป็นประจำในการกำหนดให้สคริปต์ผมทำงานตามเวลาที่ตั้งไว้

sytem scheduler for php command line application ในส่วนของการใช้งานโปรแกรมนี้ ก็ไม่มีไรมาก ตามรูปเลยครับ แต่ส่วนสำคัญอยู่ตรงที่ parameter ครับ ผมขออธิบายก่อนดังนี้ เนื่องจากในสคริปต์นี้ ผมต้องการที่จะเขียนครั้งเดียว แต่สามารถทำงานได้หลายเงื่อนไข ผมจึงออกแบบให้โปรแกรมเป็นกลางๆ ไว้ก่อน โดยให้สามารถเปลี่ยนเงือนไขภายในได้จาก Argument ที่ผมส่งเข้าไปตามรูป แต่ในกรณีที่เพื่อนๆ ออกแบบสคริปต์ให้ทำงานแค่อย่างเดียวก็อาจจะไม่จำเป็นจะต้องทำการส่ง Argument เข้าไปเหมือนผมก็ได้ แล้ภายในสคริปต์ก็จะแตกต่างไปจากของผมด้วยเช่นกัน

ในการทำอย่างนี้ เมื่อโปรแกรมเราถูก Execute เมื่อเวลาได้ถูกกำหนดตามที่เราต้องการ สคริปต์จะถูกสั่งให้ทำงานผ่านหน้าต่าง dos โดยจะทำงานเป็นแบบ text mode แต่ก็ใช่ว่าโปรแกรมของเราจะดูด้อยค่าเหมือนหน้าต่างโปรแกรมทีกำลังรันอยู่เลย กลับกัน มันกลับมีพลังในการทำงานอย่างดีเยี่ยมต่างหาก เพราะเพื่อนๆ สามารถสั่งให้สคริปต์ทำการเขียนผลลัพธ์ลง text file หรือจะเป็นนำค่าที่ได้ย้ายไปเก็บค่าในดาต้าเบส MySQLอีกทีหนึ่งก็สามารถทำได้เช่นกัน ทั้งนี่ ขึ้นอยู่กับประสบการณ์ของแต่ละคนครับ

เรามาดูตัวอย่างสคริปต์นี้กันครับ

php command line script

มันเป็นตัวอย่างง่ายๆ เพื่อให้เพื่อนๆ ได้ทดลองกันก่อน เพื่อให้ได้เห็นผลลัพธ์ ก่อนการนำไปประยุกต์ใช้งานครับ ผลลัพธ์ที่ได้ก็คือ

PHP comman line output จะเห็นว่า argc[0] ตัวแรกจะเป็นชื่อไฟล์ที่เราสั่งให้ทำงาน ส่วน argument ที่เราส่งเข้าไปในสคริปต์จะเริ่มต้นที่ argc[1] ถ้าเรามี argument ที่มากกว่า 1 ตัว เราก็จะได้ argc[2].. argc[3]…argc[n] ไปเรื่อยๆ เพื่อนๆ ลองคิดต่อดูสิครับ ว่าโปรแกรมเราจะยืดหยุ่นขนาดไหน โดยที่เราสามารถส่งค่าเข้าไปโดยผ่านทาง command line ต่อๆเข้าไปได้อย่างนี้

ถ้าใครจะไม่ใช้โปรแกรม sytem scheduler แต่เพื่อนๆ อยากรันที่ dos prompt เลยก็ได้นะครับ ก็ทำเหมือนกัน ไม่ได้ต่างกันเลยครับ เราก็สามารถ execute สคริปต์ของเราผ่าน command line ได้เช่นกันครับ

image ลองๆ นำไปประยุกต์ใช้งานกันดูครับ แล้วเจอกันใหม่ในตอนหน้าครับ สวัสดีครับ

2 ความคิดเห็น:

id said...

รออ่าน เรื่องการ config PHP ให้ติดต่อกับฐานข้อมูล Oracle
ต่อนะครับ :)

javabean on 3:16 pm, November 22, 2011 said...

ตอนนี้ทำ CURL ผ่าน system scheduler
เบื่อกับการนั่ง Run เป็นคนขี้เกียจผมชอบอะไรที่ automate
เข้า concept ผมเลย

Post a Comment

 

เกี่ยวกับฉัน(ไหมเนี้ย)

My photo

สวัสดีครับ ชื่อเปิ้ลนะครับ ถ้ามีอะไรให้ช่วยเหลือได้ ก็จะช่วยครับ
ผมได้สร้างบล๊อกไว้ เพื่อเก็บรวบรวมความรู้ และประสบการณ์ในการทำงานครับ แวะไปเยี่ยมชมกันได้ครับ http://mechacity.blogspot.com และบล๊อก http://faker-programmer.blogspot.com ครับ

รายการบล๊อกอื่นๆ

  • Solved: error: 'TKD2' was not declared in this scope, LIFA_Base compile error - วันนี้ จะมาเล่าถึงปัญหาที่เจอในการเบิร์นโค๊ด LIFA_Base ที่เราใช้ในการทำให้ Arduino ของเราสามารถรับคำสั่งจาก LabVIEW ได้ ปัญหานี้ เริ่มเกิดขึ้นตอนที่ Ard...
  • Type-Fu : Typing practice game online - หากใครที่สนใจ หรือจะต้องทำงานเกี่ยวกับคอมพิวเตอร์ หนึ่งในความจำเป็นก็คือ จะต้องเรียนรู้ที่พิมพ์สัมผัสได้ เพราะการที่พิมพ์สัมผ้สได้ มันได้ประโยชน์หลายๆ อย...

Blog อื่นๆ ที่น่าติดตาม

เหล่าบรรดา Blogger