當前位置:首頁 » 編程語言 » apachephp線程安全

apachephp線程安全

發布時間: 2022-04-19 13:58:28

❶ Apache載入php模塊後,可以正常啟動,但php文件仍然不能被解析

PHP配置(php.ini和環境變數設置)沒問題嗎?vc6和vc9都有兩個版本,一個是線程安全(Thread Safe)的,一個是線程不安全(Non Thread Safe)的,Apache

❷ php線程安全和不安全的區別

Windows下的PHP版本分兩種:線程安全版本與非線程安全版本。

要論兩者的區別,詳細論說起來比較麻煩,從使用者的角度,記住什麼時候用哪種版本的區別就可以了吧:

1、windows + IIS + FastCGI :使用非線程安全版本。

解釋:

以FastCGI方式安裝PHP時,PHP擁有獨立的進程,並且FastCGI是單一線程的,不存在多個線程之間可能引發的相互干擾(這種干擾通常都是由於全局變數和靜態變數導致的)。由於省去了線程安全的檢查,因此使用FastCGI方式比ISAPI方式的效率更高一些。

2、windows + IIS + ISAPI :使用線程安全版本。

解釋:

PHP以ISAPI方式安裝時,PHP沒有獨立的進程,而是作為DLL被IIS載入運行的,即是依附於Web伺服器進程的。當Web伺服器運行在多線程模式下(IIS正是這種情況),PHP自然也就運行在多線程模式下。只要是在多線程模式下運行,就可能存在線程安全問題,因此應選擇PHP的線程安全版本。

3、windows + Apache + PHP(模塊) :使用線程安全版本。

解釋:

如果你要在Apache中以模塊方式安裝PHP,則你應該使用PHP的線程安全的版本。原因是當PHP作為Apache的模塊安裝時,PHP沒有獨立的進程,而是作為模塊以DLL的形式被載入到Apache中的,是隨Apache的啟動而啟動的,而Windows下的Apache為多線程工作模式,因此PHP自然也就運行在多線程模式下。因此,這種情況下應使用PHP的線程安全版本。

4、windows + Apache + PHP(ISAPI) :使用線程安全版本。

解釋:

由於以ISAPI方式來安裝PHP時,PHP也沒有獨立的進程,也是作為模塊被載入到Apache中的,因此,同樣也需要使用PHP的線程安全版本。

一般不建議在Apache中以ISAPI方式來安裝PHP,原因是到目前為止,Apache通過mod_isapi.so模塊來實現的ISAPI功能並不完整,並未完整實現微軟對ISAPI所制定的全部規范。

5、windows + Apache + PHP(FastCGI) :使用非線程安全版本。

解釋:

如果你要在Apache中以FastCGI方式使用PHP,則同在IIS中使用FastCGI的PHP的情況一樣,你應該使用PHP的非線程安全的版本。原因是在Apache中以FastCGI方式安裝PHP時,PHP擁有獨立的進程,並且FastCGI是單一線程的,故應使用PHP的非線程安全版本以提高性能

❸ php5 non-thread-safe和thread-safe這兩個版本有何區別

從PHP5.2.10版本開始(現在有PHP5.2.10和5.3兩個版本),有None-Thread Safe與Thread Safe兩種版本的可供選擇,這兩種版本有何不同,作為使用者來說又應該如何選擇呢?下面聚友將為您講述。
先從字面意思上理解,None-Thread Safe就是非線程安全,在執行時不進行線程(thread)安全檢查;Thread Safe就是線程安全,執行時會進行線程(thread)安全檢查,以防止有新要求就啟動新線程的 CGI 執行方式耗盡系統資源。
再來看PHP的兩種執行方式:ISAPI和FastCGI。FastCGI執行方式是以單一線程來執行操作,所以不需要進行線程的安全檢查,除去線程安全檢查的防護反而可以提高執行效率,所以,如果是以 FastCGI(無論搭配 IIS 6 或 IIS 7)執行 PHP ,都建議下載、執行 non-thread safe 的 PHP (PHP 的二進位檔有兩種包裝方式:msi 、zip ,請下載 zip 套件)。而線程安全檢查正是為ISAPI方式的PHP准備的,因為有許多php模塊都不是線程安全的,所以需要使用Thread Safe的PHP。

❹ 為什麼php裝了nts版本的,phpinfo打開後Thread Safety還是enabled的怎麼辦快急哭了

php分為線程安全版和非線程安全版,對於Apache的用戶應當選擇線程安全版,而IIS用戶選擇非安全版, 這里還存在一個php與Apache的版本的匹配問題,可根據php 中 php5apache2_4.dll文件判斷,此為php5.x和Apache2.4.

❺ 為什麼apache2.4配置PHP7.1.31線程安全版,無法配置到mysqli模塊,也無法配置mysql,也無法連接到mysql

mysql庫早在php5.5已經棄用了,從7.0開始移除了這個擴展。
mysqli一直都可以用.
你的截圖裡面並沒有包含mysqli擴展的信息,你需要在phpinfo里看一下mysqli擴展是否正常,如果無法連接,提供一下連接代碼,以及報錯信息

❻ Apache is running a threaded MPM,but your PHP Modle is not compiled to be t

PHP編譯模式錯了。如果在windows下,需在php.net上下載 PHP 5.2.13 zip package ,不要下debug pakage 或 Non-thread-safe zip package 。
若在linux下編譯,需去掉--with-openssl 參數。

❼ 配置完PHP,apache伺服器不能運行,如何解決

php的版本 和你的apach版本不一致。apache不支持。需要重新下載安裝php.下載地址:http://windows.php.net/download/
下載注意選擇類型,例如:
VC9 x86 Non Thread Safe (2011-Mar-22 13:26:53)

Zip [15MB]
sha1:
Installer [27.26MB]
sha1:
Debug Pack [7.84MB]
sha1:

VC9 x86 Thread Safe (2011-Mar-22 13:27:32)

Zip [15.13MB]
sha1:
Installer [27.38MB]
sha1:
Debug Pack [8.15MB]
sha1:
----------------------------------------------------------------------
第一類是線程不安全的
第二類才是線程安全的。

❽ Nginx下php裝什麼版本及PHP的線程安全與非線程安全版本的區別

Apache使用線程安全(TS)版本的PHP
IIS以及使用FastCGI方式的伺服器使用非線程安全(NTS)版本的PHP
TS為多線程構建,NTS為單線程構建
TS refers to multithread capable builds.NTS refers to single thread only builds. Use case for TS binaries involves interaction with a multithreaded SAPI and PHP loaded as a mole into a web server. For NTS binaries the widespread use case is interaction with a web server through the FastCGI protocol, utilizing no multithreading (but also for example CLI).

❾ VC14 Apache2.4+PHP7.0 VC14 Non Thread Safe怎麼配置

新版本的php只有VC9和VC11
老版本的apache只能搭配VC6的PHP
VC9你需要安裝Visual C++ Redistributable for Visual Studio 2008 SP1 x86 or x64
VC11你需要安裝Visual C++ Redistributable for Visual Studio 2012 x86 or x64
只是使用了不同版本的編譯器
Non Thread Safe:使用fastcgi+iis的用這個
Thread Safe:apache+php的用這個

❿ PHP支持多線程嗎

PHP語言本身是不支持多線程的。網上關於PHP模擬多線程的方法,都是利用了LINUX和APACHE等本身所具有的多線程能力。既然是模擬的,就不是真正的多線程,其實只是多進程。
1. 利用LINUX操作系統

<?php
for ($i=0;$i<10;$i++) {
echo $i;
sleep(5);
}
?>

上面存成test.php, 然後寫一段SHELL代碼

#!/bin/bash
for i in 1 2 3 4 5 6 7 8 9 10
do
php -q test.php &
done

2. 利用fork子進程(其實同樣是利用LINUX操作系統)

<?php
declare(ticks=1);
$bWaitFlag = FALSE; /// 是否等待進程結束
$intNum = 10; /// 進程總數
$pids = array(); /// 進程PID數組
echo ("Startn");
for($i = 0; $i < $intNum; $i++) {
$pids[$i] = pcntl_fork();/// 產生子進程,而且從當前行之下開試運行代碼,而且不繼承父進程的數據信息
if(!$pids[$i]) {
// 子進程進程代碼段_Start
$str="";
sleep(5+$i);
for ($j=0;$j<$i;$j++) {$str.="*";}
echo "$i -> " . time() . " $str n";
exit();
// 子進程進程代碼段_End
}
}
if ($bWaitFlag)
{
for($i = 0; $i < $intNum; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
echo "wait $i -> " . time() . "n";
}
}
echo ("Endn");
?>

3. 利用WEB SERVER, PHP不支持多線程, APACHE可是支持的, 呵呵.

假設我們現在運行的是a.php這個文檔. 但是我在程式中又請求WEB伺服器運行另一個b.php

那麼這兩個文檔將是同時執行的.

<?php
function runThread()
{
$fp = fsockopen('localhost', 80, $errno, $errmsg);
fputs($fp, "GET /a.php?act=brnrn");
fclose($fp);
}
function a()
{
$fp = fopen('result_a.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn");
fclose($fp);
}
function b()
{
$fp = fopen('result_b.log', 'w');
fputs($fp, 'Set in ' . Date('h:i:s', time()) . (double)microtime() . "rn");
fclose($fp);
}
if(!isset($_GET['act'])) $_GET['act'] = 'a';
if($_GET['act'] == 'a')
{
runThread();
a();
}
else if($_GET['act'] == 'b') b();
?>

也可以把需要多線程處理的部分交給java去處理,然後在PHP里調用。

<?php
system('java multiThread.java');
?>

熱點內容
安卓手機鎖了怎麼開 發布:2025-01-23 17:21:18 瀏覽:136
經濟學演算法 發布:2025-01-23 17:13:46 瀏覽:420
如何和軟體聯系伺服器 發布:2025-01-23 17:13:00 瀏覽:799
javacrc16演算法 發布:2025-01-23 17:11:31 瀏覽:224
編程加圖片 發布:2025-01-23 17:10:33 瀏覽:566
中國風網站源碼 發布:2025-01-23 17:05:56 瀏覽:679
pythonfilter用法 發布:2025-01-23 17:04:26 瀏覽:568
java轉number 發布:2025-01-23 16:58:11 瀏覽:476
解壓的英語作文 發布:2025-01-23 16:45:05 瀏覽:969
湖南首選dns伺服器地址 發布:2025-01-23 16:06:39 瀏覽:874