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.
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.
Câu trả lời:
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:
php -i|findstr "Thread"
php -i|grep Thread
php -i|find "Thread"
trên * nix:php -i|grep Thread
php -i | find "Architecture"
để kiểm tra xem nó là x86 hay x64
php -i | grep Architecture
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
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!
Sau đó, có một ZEND_THREAD_SAFE
hằ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';
}
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ì? .
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()));
}