欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

php 內(nèi)置web服務(wù)器

PHP語言是目前世界上應(yīng)用最廣的服務(wù)器腳本語言之一,有非常強(qiáng)大的網(wǎng)頁開發(fā)功能。為了方便開發(fā)人員,PHP內(nèi)置了一個(gè)輕量級(jí)的Web服務(wù)器——PHP內(nèi)置Web服務(wù)器(Built-in Web Server),簡稱BWS。

相對(duì)于Apache、Nginx等成熟的Web服務(wù)器,PHP內(nèi)置Web服務(wù)器更加輕便易用。使用PHP內(nèi)置Web服務(wù)器,我們可以在開發(fā)時(shí)快速啟動(dòng)服務(wù),并且在調(diào)試時(shí)不依賴于獨(dú)立的Web服務(wù)器。

// 啟動(dòng)內(nèi)置Web服務(wù)器
php -S localhost:8000

使用簡單,但是PHP內(nèi)置Web服務(wù)器也有一些限制:

  • 不支持.htaccess文件;
  • 不支持HTTPS;
  • 不支持虛擬主機(jī);
  • 不支持URL重寫等高級(jí)功能。

然而,對(duì)于簡單的網(wǎng)站開發(fā)和小型項(xiàng)目,PHP內(nèi)置Web服務(wù)器已經(jīng)足夠使用。

假設(shè)我們有一個(gè)偽靜態(tài)的URL配置,需要在Apache或Nginx中對(duì)服務(wù)器進(jìn)行配置,然而,如果使用PHP內(nèi)置Web服務(wù)器,我們可以使用PHP本身提供的Rewrite模塊:

<?php 
function handleRequest() 
{
if (preg_match('/\.(?:png|jpg|jpeg|gif)$/', $_SERVER["REQUEST_URI"])) {
return false;    // 靜態(tài)文件請(qǐng)求則直接返回文件內(nèi)容
} else {    // 其余請(qǐng)求都進(jìn)行URL重寫
$_SERVER["SCRIPT_NAME"] = "/index.php";
$_SERVER["PHP_SELF"] = "/index.php";
include_once __DIR__ . $_SERVER["SCRIPT_NAME"];
}
}
handleRequest();
?>

與此同時(shí),我們還能使用PHP內(nèi)置的多線程服務(wù)器工作原理,提高服務(wù)器的并發(fā)性能。以下是一個(gè)簡單實(shí)現(xiàn):

<?php
$server = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
while ($conn = stream_socket_accept($server)) {
stream_copy_to_stream($conn, $child_stdin = tmpfile());
$pid = pcntl_fork();
if ($pid == -1) {
die("Could not fork");
} else if ($pid) {    // 父進(jìn)程,關(guān)閉子進(jìn)程的輸入流
fclose($child_stdin);
} else {    // 子進(jìn)程,處理客戶端請(qǐng)求
fseek($child_stdin, 0);
$data = stream_get_contents($child_stdin);
fwrite($conn, "HTTP/1.0 200 OK\r\n\r\n");
fwrite($conn, "Hello World!");
fclose($conn);
exit(0);
}
}
?>

總之,PHP內(nèi)置Web服務(wù)器既可以快速啟動(dòng),也可以通過PHP實(shí)現(xiàn)高并發(fā)等復(fù)雜的工作原理。盡管它有其自身的限制,但對(duì)于初學(xué)者和簡單的網(wǎng)站項(xiàng)目來說,它是一個(gè)非常實(shí)用的工具。