色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php nts 編譯

錢多多1年前7瀏覽0評論

PHP是一門廣泛應用于Web開發的腳本語言,而編譯則是將源程序轉換成可執行程序的過程。PHP的編譯方式一般有兩種:ZTS(線程安全編譯模式)與NTS(非線程安全編譯模式)。

相較線程安全編譯模式,非線程安全編譯模式的優點在于效率更高。當然,使用時需要遵循一定的原則和要求。比如我們在編譯PHP時會使用configure指令,安裝一些需要的擴展等,如下:

./configure --enable-fpm --with-mysqli
make
make install

若要編譯為NTS,則只需在上文中的configure指令中加入" --disable-zts"選項,如下:

./configure --enable-fpm --with-mysqli --disable-zts

而一般的PHP安裝包,為了滿足更加廣泛的需求,通常是默認編譯為ZTS的。

下面我們來通過一個例子來更好地理解NTS編譯模式的用法。例如我們使用PHP來編寫一個非常簡單的程序:

<?php
$a = 1;
$b = 2;
echo $a + $b;
?>

使用NTS編譯模式的PHP可在執行時省去線程鎖定和保護機制,從而提高程序執行效率,比如實際運行時間僅僅是使用ZTS編譯模式的一半有余。

在使用NTS編譯模式進行開發時,我們需要遵循以下的兩點建議:

1.禁用和線程模型、調試選項有關的所有擴展

雖然PHP提供了很多模塊,但其中一些是不能在非線程安全環境下使用的。這種時候,我們只需要在configure指令中加入" --disable-xxx"選項來禁用即可。比如下面這些擴展就不能在NTS下使用:

--enable-debug 
--with-tsrm-pthreads 
--enable-maintainer-zts   
--with-tsrm-st 
--with-apache2 
--enable-mod-charset   
--enable-pthreads

2.使用PHP內置鎖定機制

在多線程環境下,為了保持數據的同步性和正確性,不同線程需要對共享變量進行增刪改查時,會使用鎖(Mutex),保證操作同一變量時不沖突。

<?php
$mutex = new \Mutex('/mutex-test');
$mutex->lock();
$variable = $variable + 1;   //必須要鎖
$mutex->unlock();
?>

這里使用了PHP的一個內置鎖定類\mutex。在NTS模式下,可以用它來代替PHP提供的ZTS擴展。

總結來說,php的NTS編譯模式是為提高程序執行效率而推出的加速方式,但使用前需要注意一些特定的規則和限制,也需要仔細思考使用的擴展以及加鎖機制等等。