ในบทที่แล้ว เราได้อภิปรายทั่วไปเกี่ยวกับโปรแกรม CGI เสร็จสิ้นแล้ว ในที่นี้ผมให้โปรแกรมสาธิตง่ายๆ เป็นการสรุปเนื้อหาก่อนหน้านี้
หากต้องการใช้โปรแกรมนี้ คุณต้องมี OmniHTTPD เวอร์ชันเบต้าล่าสุด: OmniHTTPD 2.0b1 (เบต้า 1) สำหรับ Windows 95/NT หากคุณยังไม่มี คุณสามารถดาวน์โหลดได้ที่นี่ (oh20b1.zip)
วิธีการติดตั้ง OmniHTTPD จะเหมือนกับการบรรยายครั้งแรก ดังนั้นฉันจะไม่พูดถึงที่นี่ ฉันจะพูดถึงปัญหาการตั้งค่าบางอย่างในเวอร์ชันนี้ที่นี่:
เปิดกล่องโต้ตอบการตั้งค่าคุณสมบัติ OmniHTTPD ใช้ปุ่มการตั้งค่าส่วนกลางของเว็บเซิร์ฟเวอร์ ไปที่เพจภายนอก และลบการตั้งค่า .cgi เมื่อไม่ถูกลบ โปรแกรม CGI ที่มี cgi เป็นส่วนขยายจะถูกประมวลผลเป็นโปรแกรม Perl ในหลักสูตรของเรา ส่วนขยายของโปรแกรม CGI ในภาษา Perl คือ .pl และส่วนขยายของโปรแกรม CGI ที่คอมไพล์แล้วคือ .cgi ควรแก้ไขการตั้งค่าเช่นนี้
ใน OmniHTTPD เวอร์ชันนี้ การรองรับคำสั่ง SSI (รวมฝั่งเซิร์ฟเวอร์) ได้รับการปรับปรุงอย่างมากเมื่อเทียบกับเวอร์ชันก่อนหน้า และรองรับคำสั่ง เช่น รวม และ exec ในโปรแกรมสาธิต ฉันใช้คำสั่งเหล่านี้
หลังจากที่คุณดาวน์โหลด (ex8.zip) จะมีไฟล์สามไฟล์: index.shtml, makelog.cpp และ makelog.exe index.shtml เป็นสคริปต์ที่มีคำสั่ง SSI โปรดคัดลอกไปยังไดเร็กทอรี c:httpdhtdocs makelog.exe เป็นโปรแกรม CGI โปรดคัดลอกไปยังไดเร็กทอรี c:httpdcgi-bin; exe หากคุณต้องการแก้ไขการคอมไพล์ คุณต้องใช้คอมไพลเลอร์ 32 บิต เช่น VC มิฉะนั้นจะไม่สามารถใช้งานได้
นอกจากนี้ คุณต้องทำการแก้ไขการตั้งค่าใน OmniHTTPD: เลือกการตั้งค่าเสมือนเริ่มต้น และเปลี่ยนดัชนีเริ่มต้นเป็น index.shtml บนเพจเซิร์ฟเวอร์ ด้วยวิธีนี้ เมื่อคุณพิมพ์ http://localhost ในเบราว์เซอร์ OmniHTTPD จะโหลด index.shtml โดยอัตโนมัติ
สร้างเอกสาร WEB อื่นและบันทึกไว้ในไดเร็กทอรี c:httpdhtdocs ด้วยชื่อไฟล์ index.html เมื่อคุณใช้เบราว์เซอร์เพื่อเข้าถึง localhost อันดับแรก index.shtml จะเรียก makelog.exe เพื่อจัดเก็บข้อมูลการเข้าถึงของผู้ใช้ จากนั้นจึงเรียก index.html เพื่อแสดงข้อมูลดังกล่าวในเบราว์เซอร์ ข้อมูลการเข้าถึงของผู้ใช้จะถูกจัดเก็บไว้ในไฟล์ userlog ในไดเร็กทอรี c:httpdcgi-bin
ตัวอย่างนี้ใช้ตัวแปรสภาพแวดล้อมพื้นฐานและเทคโนโลยี SSI ในข้อกำหนด CGI โปรดศึกษาอย่างละเอียด
4. ฐานข้อมูล
ในบรรดาแอปพลิเคชัน CGI แอปพลิเคชันฐานข้อมูลสะท้อนถึงฟังก์ชันอันทรงพลังของโปรแกรม CGI ได้ดีที่สุด มีฐานข้อมูลมากมายบนอินเทอร์เน็ต และความต้องการแอปพลิเคชันเว็บของฐานข้อมูลเหล่านี้ก็เพิ่มขึ้นเช่นกัน (ไม่ว่าจะมาจากบริษัทหรือผู้ใช้) อาจกล่าวได้ว่าเว็บนั้นเป็นฐานข้อมูลขนาดใหญ่ วิธีจัดระเบียบคอลเลกชันข้อมูลขนาดใหญ่เหล่านี้อย่างมีประสิทธิภาพและเผยแพร่บนเว็บเป็นหัวข้อที่ CGI และระบบฐานข้อมูลร่วมกันแก้ไข
หากคุณต้องการจัดประเภท CGI และแอปพลิเคชันฐานข้อมูล มีวิธีการจำแนกประเภทที่แตกต่างกันจากมุมมองที่ต่างกัน ตัวอย่างเช่นตามขนาดของฐานข้อมูลสามารถแบ่งออกเป็นฐานข้อมูลข้อความฐานข้อมูลท้องถิ่น (Microsoft Access ฯลฯ ) และเซิร์ฟเวอร์ฐานข้อมูล (MS SQL Server, Informix ฯลฯ ) ตามเนื้อหาการประมวลผล CGI สามารถแบ่งออกเป็นโปรแกรม CGI ฐานข้อมูลส่วนหน้า (โดยผู้ใช้ที่ใช้เว็บเบราว์เซอร์) โปรแกรม CGI แบบโต้ตอบ) และโปรแกรม CGI ฐานข้อมูลส่วนหลัง (โปรแกรม CGI ที่โต้ตอบกับฐานข้อมูล) เป็นต้น การเลือกขนาดของฐานข้อมูลมักจะขึ้นอยู่กับปริมาณข้อมูลและต้นทุนของงานที่คุณต้องการทำให้เสร็จสิ้น ไม่ว่าจะแยกหรือรวมส่วนหน้าและส่วนหลังเมื่อเขียนโปรแกรม CGI มักจะขึ้นอยู่กับความซับซ้อนของการประมวลผลข้อมูลของคุณ
โดยทั่วไป หากชุดข้อมูลของคุณมีขนาดไม่เกินสองสามเมกะไบต์ และไม่มีความสัมพันธ์ที่ซับซ้อนระหว่างบันทึกข้อมูลของคุณ คุณสามารถเลือกใช้ไฟล์ข้อความเพื่อสร้างฐานข้อมูล ซึ่งสามารถรักษาต้นทุนให้ต่ำที่สุดได้ และไฟล์ข้อความก็มี ข้อดีฐานข้อมูลที่ระบบการจัดการ (DBMS คือ DataBase Management System) ไม่มี: หากมีข้อผิดพลาดเกิดขึ้นในข้อมูลของคุณ คุณสามารถถ่ายโอนไฟล์ข้อความของคุณไปยังโปรแกรมแก้ไขข้อความใดก็ได้เพื่อการกู้คืน และหากเกิดข้อผิดพลาดในระบบฐานข้อมูลของคุณ เว้นแต่คุณจะเป็นผู้เชี่ยวชาญด้านฐานข้อมูล ไม่เช่นนั้นจะซ่อมได้ยาก
หากการรวบรวมข้อมูลของคุณมีขนาดใหญ่มาก หรือหากบันทึกข้อมูลของคุณมีความสัมพันธ์ที่ซับซ้อนระหว่างกัน วิธีที่ดีที่สุดคือใช้ระบบฐานข้อมูล การใช้ไฟล์ข้อความเพื่อใช้งานฐานข้อมูลขนาดหลายสิบเมกะไบต์จะเกินกำลังเซิร์ฟเวอร์ RISC ขั้นสูงใดๆ หากคุณใช้โปรแกรม CGI เพื่อจัดการความสัมพันธ์ที่ซับซ้อนระหว่างข้อมูล มันจะเพิ่มความซับซ้อนของโปรแกรม CGI และใช้ทรัพยากรเซิร์ฟเวอร์มากเกินไปอย่างหลีกเลี่ยงไม่ได้ ในทางกลับกัน การใช้ฟังก์ชันของระบบฐานข้อมูลสามารถลดความยากในการออกแบบโปรแกรม CGI ได้ และปรับปรุงประสิทธิภาพการพัฒนา
เมื่อเลือกระบบฐานข้อมูล คุณต้องเลือกจากประเด็นต่อไปนี้: 1. แพลตฟอร์มระบบปฏิบัติการ: คุณควรเลือกระบบฐานข้อมูลที่คุณคุ้นเคยมากที่สุด และคุณควรเลือกแพลตฟอร์มระบบปฏิบัติการที่คุณคุ้นเคยมากที่สุดด้วย วิธีนี้คุณสามารถหลีกเลี่ยงข้อผิดพลาดได้ 2. ราคา: คุณควรเลือกระบบฐานข้อมูลที่ถูกที่สุดในบรรดาระบบฐานข้อมูลต่างๆ ที่สามารถทำให้งานของคุณเสร็จสมบูรณ์ได้ ที่นี่ ฉันสามารถบอกคุณเกี่ยวกับระบบฐานข้อมูลฟรีที่เรียกว่า MiniSQL ได้ มันจะต้องทำงานบนแพลตฟอร์ม UNIX หรือ linux ฉันไม่รู้ว่าอยู่ที่ไหน มีระบบฐานข้อมูลฟรีสำหรับแพลตฟอร์ม Windows ถ้าใครรู้ช่วยบอกฉันแล้วฉันจะเล่าให้ฟังในหลักสูตรต่อ ๆ ไป
หลักสูตรของเราเกี่ยวกับการใช้ Delphi ในการพัฒนาโปรแกรม CGI และ Delphi มีระบบฐานข้อมูล Interbase Server ดังนั้นผมจะพูดถึงการพัฒนาโปรแกรม CGI โดยใช้ระบบฐานข้อมูลเป็นหลัก ในเวลาเดียวกัน เนื่องจากระบบฐานข้อมูลลดงานการเขียนโค้ดจำนวนมาก ฉันจึงรวม CGI ส่วนหน้าและ CGI ด้านหลังเป็นหนึ่งเดียวเพื่อให้การประมวลผลอินพุตของผู้ใช้และการดำเนินการฐานข้อมูลเสร็จสมบูรณ์ในโปรแกรม CGI เดียว แต่บนแพลตฟอร์มระบบอื่น ๆ วิธีนี้อาจไม่สามารถใช้ได้ ผู้อ่านจะต้องตัดสินใจด้วยตนเองตามการสนทนาครั้งก่อน
ที่นี่ ฉันอยากจะอธิบาย CGI ต่างๆ และความแตกต่างในการใช้งานใน OmniHTTPD ของเรา:
CGI มาตรฐาน: ต้องวาง CGI มาตรฐานในไดเร็กทอรีที่กำหนดโดย /cgi-bin/ และสามารถแก้ไขได้ทุกเมื่อเมื่อ OmniHTTPD ทำงานอยู่
Win CGI: CGI ที่ใช้ในระบบ Windows จะต้องอยู่ในไดเร็กทอรีที่กำหนดโดย /cgi-win/ CGI นี้ใช้ไฟล์ INI เพื่อรับคำขอจากเบราว์เซอร์ไคลเอนต์ แทนที่จะใช้ตัวแปรสภาพแวดล้อมหรืออินพุตมาตรฐาน โดยทั่วไปเราไม่ใช้ CGI ประเภทนี้
ISAPI: ข้อกำหนด CGI ที่ใช้ไลบรารีลิงก์แบบไดนามิกที่เสนอโดย Microsoft
NSAPI: ข้อกำหนด CGI ที่ใช้ไลบรารีลิงก์แบบไดนามิกที่เสนอโดย Netscape
ข้อกำหนด CGI แต่ละรายการมีลักษณะเฉพาะของตัวเอง: CGI มาตรฐานสามารถเขียนได้โดยใช้โปรแกรมปฏิบัติการหรือภาษาสคริปต์เช่น Perl แต่จะไม่มีประสิทธิภาพและใช้ทรัพยากรจำนวนมาก ทำงานในเซิร์ฟเวอร์ Win CGI มีคุณสมบัติเช่นเดียวกับ Stardand CGI ISAPI และ NSAPI มีประสิทธิภาพสูงและอยู่ในหน่วยความจำ และไม่ว่าจะมีคำขอ CGI มากเพียงใด ก็มีเพียงอินสแตนซ์เดียวที่ทำงานอยู่ในเซิร์ฟเวอร์ มีเพียงชุดข้อมูลที่สอดคล้องกับอินสแตนซ์นี้เท่านั้นที่แตกต่างกัน แต่ CGI ประเภทนี้ไม่ใช่เรื่องง่าย เพื่อตรวจแก้จุดบกพร่องเนื่องจากจะต้องอยู่บนเว็บเซิร์ฟเวอร์ การอัพเดตจะมีให้เฉพาะเมื่อซอฟต์แวร์ถูกปิดเท่านั้น
ในการบรรยายครั้งต่อไปผมจะนำเสนอโปรแกรมสาธิตไวท์เพจ White Page คือรายการที่อยู่อีเมล คุณสามารถอนุญาตให้ผู้ใช้สามารถสืบค้น แก้ไข เพิ่ม และลบรายการนี้ได้ผ่านทางเว็บเบราว์เซอร์ ในการบรรยายนี้ โปรแกรมสาธิตที่ผมให้เป็นเพียงการดำเนินการสืบค้นเท่านั้น และการดำเนินการอื่นๆ จะอธิบายไว้ในหลักสูตรต่อๆ ไป
โปรแกรมสาธิตนี้สร้างขึ้นบนฐานข้อมูล Borland Interbase Server และพัฒนาใน Delphi ในระหว่างการพัฒนา ฉันเลือก Standard CGI เพราะง่ายต่อการแก้ไขจุดบกพร่อง
โปรแกรมของเราเขียนโดยใช้ Stardand CGI ซึ่งสามารถแก้ไขจุดบกพร่องได้อย่างง่ายดาย หลังจากการดีบักสำเร็จ ก็สามารถเปลี่ยนเป็น ISAPI/NSAPI ใน Delphi ได้อย่างง่ายดายด้วยคำสั่งเดียว (เป็นอย่างไรบ้าง Delphi นั้นดีมาก!)