msgbartop
Just another blog of mine
msgbarbottom

28 May 07 PHP-PCNTL

ช่วงนี้กำลังพัฒนาระบบให้กับที่ทำงานอย่างที่พูดถึงไปแล้วในหัวข้อก่อน เสร็จแล้วระบบนี้จะต้องสร้าง report ออกมาเป็น PDF ตอนแรกก็พยายามไปค้นๆ เจอ fpdf ซึ่งเป็นไลบรารีสำหรับสร้างเอกสารแบบ PDF โดยใช้ php แต่ลองใช้ดูสักพักก็รู้สึกว่าใช้งานยาก คือจะปรับแต่งให้ได้ดั่งใจค่อนข้างยาก (เผอิญ report ที่ต้องการ ประกอบด้วยตารางเป็นส่วนใหญ่) สุดท้ายเลยกลับมาตายรังโดยใช้ php สร้าง source สำหรับ LaTeX จากนั้นก็ใช้ pdflatex รันก็เสร็จแล้ว

ทีนี้พอทำส่วนประกอบต่างๆ เสร็จ ก็อยากจะทำเท่ห์โดยให้ pdflatex ทำงานแบบพื้นหลัง แล้วค่อยใช้ Ajax มาคอยเช็คดูว่าสร้าง pdf เสร็จหรือยัง ก็จำเป็นต้องสร้าง process ใหม่ขึ้นมาเพื่อเรียก pdflatex มาทำงาน ลองค้นดูก็พบว่า php มีกลุ่มคำสั่ง pcntl (Process Control) สำหรับควบคุม process ต่างๆ ซึ่งในนั่นจะมีคำสั่ง pcntl_fork() เอาไว้สร้าง process ลูก และ pcntl_exec(…) สำหรับกำหนดให้เรียกโปรแกรมมาทำงาน

พอใช้ก็โดนเตือนว่าไม่รู้จักคำสั่งพวกนี้ ลองหาไปหามา ก็มีคนบอกว่าต้อง enable pcntl ก่อน ใน ubuntu ไม่ได้ทำมาให้ สุดท้ายก็เลยไปพยายามสร้าง .deb ขึ้นมาใหม่เพื่อการนี้ แต่ก็ยังใช้ไม่ได้ ลองค้นดูอีกเจอว่า คำสั่งพวกนี้จะใช้ได้เฉพาะเวลาใช้ php แบบ CGI เท่านั้น ไม่สามารถใช้ได้เวลาทำงานเป็น module หนึ่งของ Apache (คิดว่าคงเพราะทำงานเป็นส่วนหนึ่งของ process ของ Apache ถ้ายอมให้ทำได้ ก็อาจจะเกิดปัญหาต่างๆ ได้ ต่างจากแบบ CGI ที่ทำงานอยู่บน process ของ php เอง)

สุดท้ายก็เลยเปลี่ยนใจไม่ใช้แล้ว เพราะดูท่าทางจะยุ่งยาก แล้ว pdflatex มันก็ไม่ได้ทำงานนานเท่าไหร่ เนื่องจากไฟล์ค่อนข้างเล็ก

Tags: ,

14 May 07 CakePHP

CakePHP เป็น API และ framework สำหรับพัฒนาโปรแกรมบนเว็บ โดยอิงกับรูปแบบ MVC ที่มี Ruby on Rails เป็นผู้นำทาง รู้จัก CakePHP โดยบังเอิญ เนื่องจากจะต้องพัฒนาระบบงานระบบหนึ่งให้กับสถาบันฯ แบบเร่งรัด โดยส่วนตัวก็ชอบแนวคิดของ RoR แต่รู้สึกไม่ค่อยชินกับไวยากรณ์และโครงสร้างของภาษา Ruby สักเท่าไหร่ แม้ว่าจะใช้ Ruby เขียนสคริปต์เป็นหลักตอนเรียนปริญญาเอก แต่ทำยังไงก็ไม่คุ้น หยุดใช้ไปซักหน่อยก็จะลืมหมด จะเขียนใหม่ก็ต้องมานั่งอ่านกันทุกที  เลยลองหาไลบรารีเพิ่มเติมของ PHP ซึ่งใช้ไวยากรณ์คล้ายภาษาซีที่ติดอยู่ในสายเลือดแล้ว หาไปหามาก็เจอ CakePHP ตัวนี้แหละ

ข้อดีของ CakePHP ก็คือ เป็นแค่ library เพิ่มเติม ที่ทำงานร่วมกับ interpreter ของภาษา PHP ทำให้ติดตั้งโปรแกรมหรือระบบได้ง่าย ไม่ต้องการอะไรพิเศษ ดาวน์โหลดมาแล้ว พอระเบิดออกก็จะได้ directory มาหนึ่งอัน ที่เราสามารถเพิ่มโปรแกรมของเราเข้าไปตามโครงสร้างที่วางไว้ และ directory นี้ก็มีลักษณะเช่นเดียวกับระบบที่พัฒนาด้วย PHP แบบเดิม เอาไปวางไว้บน web server แก้ config นิดหน่อยก็ใช้งานได้แล้ว  สะดวกมาก นอกจากนี้ CakePHP ยังเหมาะกับคนที่เข้าใจไวยากรณ์ของ PHP อยู่แล้ว เรียกว่าไม่ต้องปรับตัวมากมาย ก็เข้าใจระบบ และสามารถเขียนโปรแกรมได้ทันที

Tags: ,