ฉันจะทราบได้อย่างไรว่า PHP เวอร์ชันที่ติดตั้งนั้นปลอดภัยสำหรับเธรดหรือไม่เธรดปลอดภัย
โปรดทราบว่าฉันไม่ได้ถามความแตกต่างระหว่างการติดตั้งเธรดที่ปลอดภัย / ไม่ใช่เธรดที่ปลอดภัย ฉันต้องการทราบสิ่งที่ติดตั้งอยู่ในขณะนี้
ฉันจะทราบได้อย่างไรว่า PHP เวอร์ชันที่ติดตั้งนั้นปลอดภัยสำหรับเธรดหรือไม่เธรดปลอดภัย
โปรดทราบว่าฉันไม่ได้ถามความแตกต่างระหว่างการติดตั้งเธรดที่ปลอดภัย / ไม่ใช่เธรดที่ปลอดภัย ฉันต้องการทราบสิ่งที่ติดตั้งอยู่ในขณะนี้
คำตอบ:
เปิด phpinfo () และค้นหาบรรทัดด้านความปลอดภัยของกระทู้ สำหรับการสร้างด้ายปลอดภัยคุณควรจะหาเปิดใช้งาน
ตามที่ระบุไว้ในความคิดเห็นของMuhammad Gelbanaคุณยังสามารถใช้:
php -i|findstr "Thread"
php -i|grep Thread
php -i|find "Thread"
บน * nix:php -i|grep Thread
php -i | find "Architecture"
เพื่อตรวจสอบว่าเป็น x86 หรือ x64
php -i | grep Architecture
หากคุณต้องการใช้บรรทัดคำสั่ง:
*ห้าม:
php -i | grep -i "Thread"
Windows:
php -i | findstr -i "thread"
สิ่งนี้ควรให้สิ่งนี้แก่คุณ:
Thread Safety => enabled
หรือ
Thread Safety => disabled
สร้างไฟล์ PHP ใหม่และใส่รหัสนี้:
<?php
phpinfo(); ?>
จากนั้นเรียกใช้หน้านี้และคุณจะพบข้อมูล PHP ทั้งหมด ค้นหาคำที่คุณต้องการและจะแสดงว่าเปิดใช้งาน
ฉันพบว่ามันง่ายกว่าที่จะดูไฟล์ชื่อ php [version] .dll ในโฟลเดอร์รากของ php เป็นทั้ง php [version] .dll หรือ php [version] ts.dll (TS สำหรับ Thread Safe) ดังนั้นหากคุณติดตั้ง php7.0.10 ให้ไปที่ไดเร็กทอรีที่มีชื่อนี้แล้วคุณจะพบไฟล์ชื่อ php7ts.dll นี่เป็นวิธีที่น่าเศร้ามากในการค้นหา แต่ได้ผล!
จากนั้นก็มีZEND_THREAD_SAFE
ค่าคงที่ที่ไม่มีเอกสารซึ่งดูเหมือนว่าจะมีอยู่ตั้งแต่ PHP 4.3
<?php
if (ZEND_THREAD_SAFE) {
echo 'Thread safe';
} else {
echo 'Not thread safe';
}
ตรวจสอบว่าการติดตั้งของคุณเป็น Apache Module หรือ CGI Binary ดูคำถาม Stack Overflow เธรดปลอดภัยหรือไม่เธรดปลอดภัยใน PHP คืออะไร .
จากสคริปต์:
/**
* @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()));
}