Tìm xem PHP đã cài đặt là threadsafe hay nonthreadsafe?


90

Làm cách nào để biết phiên bản PHP đã cài đặt có an toàn cho luồng hay không?

Xin lưu ý rằng tôi không hỏi sự khác biệt giữa cài đặt an toàn luồng / không an toàn luồng. Tôi muốn tìm hiểu những gì được cài đặt hiện tại.


1

1
@Haim Đó không phải là câu hỏi của tôi Haim. Tôi đã nhìn thấy chủ đề đó. Tôi đã cài đặt PHP trên máy chủ này. Nó hoạt động với IIS. Nhưng, tôi cần tìm hiểu thiết lập nào đã được sử dụng để cài đặt này ... Thiết lập Threadsafe / thiết lập không an toàn?
Josh

Câu trả lời:


166

Mở một phpinfo () và tìm kiếm dòng Thread an toàn . Đối với một bản dựng an toàn luồng, bạn nên tìm kích hoạt .

Như đã nêu trong các bình luận của Muhammad Gelbana, bạn cũng có thể sử dụng:

  • Trên Windows: php -i|findstr "Thread"
  • Trên * nix: php -i|grep Thread

15
Trên Windows: php -i|find "Thread"trên * nix:php -i|grep Thread
Muhammad Gelbana

7
Lưu ý cho bản thân: php -i | find "Architecture"để kiểm tra xem nó là x86 hay x64
checksum

@checksum itphp -i | grep Architecture
helpse

22

Nếu bạn thích sử dụng dòng lệnh:

  • * nix:

    php -i | grep -i "Thread"
  • Các cửa sổ:

    php -i | findstr -i "thread"

Điều này sẽ cung cấp cho bạn một cái gì đó như thế này:

Thread Safety => enabled

hoặc là

Thread Safety => disabled

Không phải là một ý kiến ​​hay, vì phiên bản PHP được máy chủ sử dụng có thể khác với phiên bản do HĐH chọn (mặc định).
Buffalo

4

Tạo một tệp PHP mới và chèn mã này vào đó:

<?php
phpinfo(); ?>

Sau đó chạy trang này và bạn sẽ tìm thấy tất cả thông tin PHP. Tìm kiếm cụm từ mà bạn muốn và nó sẽ hiển thị cho bạn nó đã được kích hoạt.


4

Tôi chỉ thấy dễ dàng hơn khi xem tệp có tên php [version] .dll trong thư mục gốc của php. Nó có thể là php [version] .dll hoặc php [version] ts.dll (ts là viết tắt của Thread Safe). Vì vậy, nếu bạn đã cài đặt php7.0.10, hãy truy cập thư mục có tên này và bạn sẽ tìm thấy một tệp có tên php7ts.dll. Đây là một cách rất buồn để tìm ra, nhưng nó hoạt động!


4

Sau đó, có một ZEND_THREAD_SAFEhằng số không có tài liệu , dường như tồn tại kể từ PHP 4.3.

<?php

if (ZEND_THREAD_SAFE) {
    echo 'Thread safe';
} else {
    echo 'Not thread safe';
}

https://3v4l.org/tALKX


1

Kiểm tra xem cài đặt của bạn là Apache Module hay CGI Binary. Xem câu hỏi Stack Overflow Câu hỏi an toàn luồng hoặc không an toàn luồng trong PHP là gì? .


Làm cách nào để kiểm tra điều đó? Tất nhiên, nó đang được IIS sử dụng..Nhưng làm cách nào để tôi tìm ra nó là mô-đun nào? Đó là câu hỏi của tôi ... Tôi không có ý hỏi sự khác biệt giữa threadsafe / non thread safe. Tôi cần biết liệu phiên bản đã cài đặt có an toàn hay không
Josh

Ok, tôi chỉ điều tra một chút, và có sẵn 2 bản dựng ; an toàn và không an toàn. Theo hướng dẫn cài đặt này cho các cài đặt không an toàn theo luồng IIS7 được khuyến nghị. Bạn có thể mở một phpinfo () và xem từ 'thread' có xuất hiện ở đâu không?
Phliplip

yeah, phpinfo có các thông tin trong nó ... Chỉ cần tìm thấy nó ... Cảm ơn @Philiplip
Josh

1

Từ một tập lệnh:

/**
 * @return boolean true if PHP is thread safe
 */
function isThreadSafe()
{
    ob_start();
    phpinfo(INFO_GENERAL);
    return preg_match('/Thread\s*Safety\s*enabled/i', strip_tags(ob_get_clean()));
}
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.