PHP Thread An toàn và Non-Thread An toàn cho Windows


88

Tôi đang tải xuống PHP cho Windows. Tôi có 2 lựa chọn trên trang web.

  1. An toàn chuỗi PHP
  2. PHP an toàn không theo luồng

Hãy trả lời những câu hỏi sau đây:

  1. Sự khác biệt giữa hai là gì? Ưu điểm và nhược điểm của nhau là gì?
  2. Tôi đang phát triển một trang web thương mại điện tử sẽ có lượng truy cập lớn, trang web nào được khuyên dùng nhiều hơn và tại sao?


1
Bạn hiểu gì về "giao thông đông đúc" và làm thế nào bạn có thể chắc chắn rằng bạn sẽ nhận được nó?
Crack

@ Crack- Lưu lượng truy cập lớn có nghĩa là nhiều người dùng sẽ sử dụng trang web tại một thời điểm nhất định. Tại sao tôi không thể chắc chắn về điều đó ?! Có gì đó sai với nó?
sumit

Chỉ có thể định nghĩa rằng "giao thông đông đúc" theo nhiều cách, và đối với một số người thì giao thông đông đúc đối với một số người có thể là giao thông vừa hoặc thậm chí là nhẹ. Một số liệu hữu ích ở đây là số lần truy cập trang / ngày / giờ / phút, bất kỳ loại thước đo khách quan nào.
Crack

Câu trả lời:


92

Từ tài liệu PHP:

An toàn luồng có nghĩa là tệp nhị phân có thể hoạt động trong ngữ cảnh máy chủ web đa luồng, chẳng hạn như Apache 2 trên Windows. An toàn luồng hoạt động bằng cách tạo bản sao lưu trữ cục bộ trong mỗi luồng, để dữ liệu không va chạm với luồng khác.

Vậy tôi chọn cái gì? Nếu bạn chọn chạy PHP dưới dạng nhị phân CGI, thì bạn sẽ không cần sự an toàn của luồng, vì nhị phân được gọi theo mỗi yêu cầu. Đối với máy chủ web đa luồng, chẳng hạn như IIS5 và IIS6, bạn nên sử dụng phiên bản phân luồng của PHP.

Vì vậy, nó thực sự phụ thuộc vào cách bạn muốn sử dụng PHP:

  • Apache + LoadModule: Thread Safe
  • Apache + FastCGI: An toàn không theo luồng
  • IIS: An toàn Chủ đề
  • IIS + FastCGI: An toàn không theo luồng

Hướng dẫn sử dụng PHP có hướng dẫn cài đặt rất hay .

AFAIR chạy PHP với FastCGI là cách thích hợp hơn, nó hoạt động nhanh hơn và cho phép cấu hình bảo mật chi tiết hơn.


11
Đây trang nói rằng: "Nếu bạn đang sử dụng PHP với IIS bạn nên sử dụng các phiên bản Non-Chủ đề an toàn (NTS) của PHP." so với câu trả lời cho biết: "IIS: Thread Safe"
umutm

9
Có, và nó đề cập đến FastCGI. Thread Safe dành cho khi sử dụng ISAPI (php5isapi.dll)
Crack

3
Tại sao phải bận tâm với tùy chọn không an toàn theo luồng? Nó giống như: nếu tôi có thể lựa chọn giữa việc mua một chiếc xe an toàn và một chiếc xe không an toàn, tại sao tôi lại chọn chiếc xe không an toàn? Nó hoạt động tốt hơn hay gì đó?
Simon East,

4
@SimonEast Các NTS phiên bản có một số chi phí quản lý đề, mà đã được thực hiện bởi máy chủ web, vì vậy hiệu suất sẽ bị suy thoái
Reza

3
@SimonEast Chính xác. Nó giống như làm một công việc hai lần, một lần trong PHP và một lần trong máy chủ web
ReZa

2

Nhanh chóng và đơn giản: Nếu bạn đang sử dụng Apache, hãy chỉnh sửa tệp Apache24 \ conf \ httpd.conf của bạn và tìm kiếm "loadmodule". Nếu bạn thấy loadmodule của mình đang tham chiếu đến .dll như sau:

LoadModule php7_module "e: /x64Stack/PHP/php7.1.9/php7apache2_4.dll"
Ứng dụng AddHandler / x-httpd-php .php
PHPIniDir "e: /x64Stack/PHP/php7.1.9"

Sau đó, bạn muốn bật An toàn luồng hoặc phiên bản TS - An toàn luồng .

Khác nếu bạn đang sử dụng IIS hoặc Apache với CGI thì hương vị NTS.

Tôi sử dụng nhiều ngăn xếp và trong nhiều máy chủ và phiên bản PHP đó, vì vậy đừng để các đường dẫn / php hoặc phiên bản máy chủ ném bạn.


0

Ngoài Crack, kể từ 5.4, bạn có thể sử dụng máy chủ web tích hợp sẵn (nó hoạt động tốt!).


12
Bạn cần thêm một số loại tham chiếu đến những gì bạn đang nói về. Máy chủ web tích hợp nào? Điều này liên quan như thế nào đến ThreadSafe và NotThreadSafe?
Despertar

1
Tôi nghĩ về máy chủ web tích hợp, ý của anh ấy là máy chủ web tích hợp sẵn của PHP ( php -S ip:port) - mặc dù vậy, không có ý kiến ​​gì về mối liên quan đến an toàn luồng.
David Refoua
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.