Php ปรกติ กับ php-cgi มันทำงานต่างกันยังไงครับ ช่วยอธิบายทีครับ

PHP ปรกติ กับ PHP-CGI มันทำงานต่างกันยังไงครับ ช่วยอธิบายทีครับ อยากทราบความแตกต่างของมัน

และความเร็วในการทำงานว่าแบบไหนจะเร็วกว่ากัน

เทียบกันบน Linux หรือ Unix นะคับ

ขอบคุณคับ

ป.ล. ตามที่ผมเข้าใจคือ php ธรรมดามันจะอ่านเข้าไปใน service ของ apache เลย เหมือนมอดูตัวนึง แต่ php-cgi จะใช้ทีจะอ่านทีถูกไหมคับ

lol

ตามความเข้าใจของผม php-cgi จะถูกเรียกขึ้นมาทำงาน และโหลด extension ต่างๆเมื่อมีการใช้งานเท่านั้น เมื่อทำงานจนเสร็จสิ้นสิ้นกระบวนการจะ release memory ให้กับระบบ ต่อไป สวน php แบบธรรมดา จะถูกเรียกขึ้นมาทำงานครั้งเดียวตั้งแต่ระบบเริ่มทำงานและสิ้นสุดเมื่อ webserver หยุดทำงาน

ต้องบอกว่า php-cli ครับ (ประเภทที่เป็น module ของ apache น่ะครับ)
เข้าใจถูกแล้วครับ ประมาณนั้นแหละ คือ load มาพร้อมกับ web server แล้วก็ die ตอน shutdown web server
แบบนี้จะทำให้ระบบ cache (พวก apc / eaccelerator) ทำงานได้เต็มที่

ส่วน php-cgi นั้นจะเป็นแบบ เวลามีการเรียกใช้งาน script php
ก็จะไปเรียกตัว php interpreter มาทำงาน
แล้วก็ load module ต่างๆ พอประมวลผลเสร็จก็ terminate ตัวเอง ทำให้ไม่มี session ค้าง
แต่มันจะช้ามากๆ เพราะเวลาเรียก script ทีนึงก็ต้อง load module ทีนึง

แล้วก็มีอีกอย่าง คือ php-fastcgi การทำงานจะคล้ายๆ กับ php-cli ครับ
แต่ต่างกันที่จะรันเป็น process แยกต่างหาก (มีเฉพาะ php เพียวๆ)
โดย web server จะ connect มาหา php แล้วส่ง script ให้ process
เพราะฉะนั้นจะประหยัด resource ของ web server มากกว่าอยู่เยอะมากๆ
ความเร็วก็สูสีกับ cli เผลอๆ จะเร็วกว่าด้วยซ้ำ เพราะลง caching ได้เหมือนกับพวก cli เลย

เอ่อ ถามผิด ต้องถามว่า PHP กับ PHP-FastCGI แหะๆ

ที่ผมใช้อยู่ lighttpd + php_fastcgi

  1. static file: lighttpd รองรับได้สุดยอดมากๆ ครับ แทบไม่กินระบบอะไรเลย
  2. php script: speed ก็พอๆ กับ apache เลย ถ้าเซตให้ดีๆ ก็เร็วกว่าเยอะเหมือนกัน (10-20%)

ที่สำคัญ memory กินน้อยกว่าด้วยครับ

มาสนับสนุน ด้วยคนครับ lighttpd