PHP Thread Safe และ Non-Thread Safe สำหรับ Windows


91

ฉันกำลังดาวน์โหลด PHP สำหรับ Windows ฉันมี 2 ตัวเลือกในเว็บไซต์

  1. PHP Thread ปลอดภัย
  2. PHP Non-Thread ปลอดภัย

กรุณาตอบคำถามต่อไปนี้:

  1. อะไรคือความแตกต่างระหว่างทั้งสอง? อะไรคือข้อดีและข้อเสียมากกว่ากัน?
  2. ฉันกำลังพัฒนาเว็บไซต์อีคอมเมิร์ซที่มีผู้เข้าใช้งานหนาแน่นแนะนำให้ใช้อันไหนมากกว่ากันและเพราะเหตุใด


1
คุณเข้าใจอะไรจาก "การจราจรหนาแน่น" และคุณมั่นใจได้อย่างไรว่าจะได้รับ
แตก

@ Crack- การจราจรหนาแน่นหมายความว่าผู้ใช้จำนวนมากจะเข้าใช้เว็บไซต์ในเวลาที่กำหนด ทำไมฉันถึงแน่ใจไม่ได้! มีบางอย่างผิดปกติหรือไม่?
sumit

เฉพาะ "การจราจรหนาแน่น" เท่านั้นที่สามารถกำหนดได้หลายวิธีและสิ่งที่สำหรับบางคนคือการจราจรหนาแน่นสำหรับบางคนอาจเป็นการจราจรปานกลางหรือแม้กระทั่งการจราจรเบาบาง เมตริกที่มีประโยชน์ในที่นี้คือจำนวนการเข้าชมหน้า / วัน / ชั่วโมง / นาทีซึ่งเป็นการวัดวัตถุประสงค์ประเภทใดก็ได้
แตก

คำตอบ:


95

จากเอกสาร PHP:

ความปลอดภัยของเธรดหมายความว่าไบนารีสามารถทำงานในบริบทเว็บเซิร์ฟเวอร์แบบมัลติเธรดเช่น Apache 2 บน Windows ความปลอดภัยของเธรดทำงานโดยการสร้างสำเนาที่จัดเก็บในเครื่องในแต่ละเธรดเพื่อไม่ให้ข้อมูลชนกับเธรดอื่น

แล้วฉันจะเลือกอะไร? หากคุณเลือกที่จะเรียกใช้ PHP เป็นไบนารี CGI คุณจะไม่ต้องการความปลอดภัยของเธรดเนื่องจากไบนารีถูกเรียกใช้ในแต่ละคำขอ สำหรับเว็บเซิร์ฟเวอร์แบบหลายเธรดเช่น IIS5 และ IIS6 คุณควรใช้ PHP เวอร์ชันเธรด

ดังนั้นจึงขึ้นอยู่กับวิธีที่คุณต้องการใช้ PHP:

  • Apache + LoadModule: เธรดปลอดภัย
  • Apache + FastCGI: Non-Thread Safe
  • IIS: เธรดปลอดภัย
  • IIS + FastCGI: Non-Thread Safe

คู่มือ PHP มีความสุขในการติดตั้ง

AFAIR ที่ใช้ PHP กับ FastCGI เป็นวิธีที่ดีกว่าซึ่งทำงานได้เร็วขึ้นและช่วยให้สามารถกำหนดค่าความปลอดภัยได้ละเอียดยิ่งขึ้น


11
หน้านี้จะบอกว่า: "หากคุณใช้ PHP กับ IIS คุณควรใช้ PHP เวอร์ชัน Non-Thread Safe (NTS)" เมื่อเทียบกับคำตอบที่บอก: "IIS: Thread Safe"
umutm

9
ใช่และกล่าวถึง FastCGI Thread Safe มีไว้สำหรับเมื่อใช้ ISAPI (php5isapi.dll)
แตก

3
ทำไมต้องกังวลกับตัวเลือกที่ไม่ปลอดภัยของเธรดเลย? มันเหมือนกับว่าถ้าฉันเลือกได้ระหว่างซื้อรถปลอดภัยกับรถที่ไม่ปลอดภัยทำไมฉันถึงเลือกรถที่ไม่ปลอดภัยล่ะ? มันทำงานได้ดีขึ้นหรืออะไร?
Simon East

4
@SimonEast เวอร์ชัน NTS มีเธรดการจัดการค่าใช้จ่ายบางส่วนซึ่งทำโดยเว็บเซิร์ฟเวอร์แล้วดังนั้นประสิทธิภาพจะลดลง
ReZa

3
@SimonEast แน่นอน มันเหมือนกับการทำงานสองครั้งหนึ่งครั้งใน PHP และหนึ่งครั้งในเว็บเซิร์ฟเวอร์
ReZa

2

ง่ายและรวดเร็ว: หากคุณใช้ Apache ให้แก้ไขไฟล์ Apache24 \ conf \ httpd.conf ของคุณและค้นหา "loadmodule" หากคุณเห็นว่า loadmodule ของคุณอ้างถึง. dll สิ่งที่ต้องการ:

LoadModule php7_module "e: /x64Stack/PHP/php7.1.9/php7apache2_4.dll"
แอปพลิเคชัน AddHandler / x-httpd-php .php
PHPIniDir "e: /x64Stack/PHP/php7.1.9"

แล้วคุณต้องการด้ายเปิดใช้งานความปลอดภัยหรือTS - กระทู้รุ่นปลอดภัย

หากคุณใช้ IIS หรือ Apache กับ CGI แล้วก็ปรุงรส NTS

ฉันใช้หลายสแต็กและภายในเซิร์ฟเวอร์และเวอร์ชันต่างๆของ PHP ดังนั้นอย่าปล่อยให้พา ธ / php หรือเวอร์ชันเซิร์ฟเวอร์โยนคุณ


0

นอกจาก Crack แล้วตั้งแต่ 5.4 คุณสามารถใช้เว็บเซิร์ฟเวอร์ในตัวได้ (ใช้งานได้ดี!)

คำเตือนเว็บเซิร์ฟเวอร์นี้ออกแบบมาเพื่อช่วยในการพัฒนาแอปพลิเคชัน นอกจากนี้ยังอาจมีประโยชน์สำหรับวัตถุประสงค์ในการทดสอบหรือสำหรับการสาธิตแอปพลิเคชันที่ทำงานในสภาพแวดล้อมที่มีการควบคุม ไม่ได้มีไว้เพื่อเป็นเว็บเซิร์ฟเวอร์ที่มีคุณสมบัติครบถ้วน ไม่ควรใช้บนเครือข่ายสาธารณะ


13
คุณต้องเพิ่มการอ้างอิงบางอย่างเกี่ยวกับสิ่งที่คุณกำลังพูดถึง เว็บเซิร์ฟเวอร์ในตัวคืออะไร? สิ่งนี้เกี่ยวข้องกับ ThreadSafe กับ NotThreadSafe อย่างไร
Despertar

2
ฉันคิดว่าโดยเว็บเซิร์ฟเวอร์ในตัวเขาหมายถึงเว็บเซิร์ฟเวอร์ในตัวของ PHP ( php -S ip:port) - ไม่รู้เกี่ยวกับความสัมพันธ์กับความปลอดภัยของเธรด
David Refoua
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.