PHP实现动态web服务器方法

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHP实现动态web服务器方法脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

以下内容通过图文并茂的方式介绍PHP实现动态web服务器方法,具体内容如下:

本文所实现的服务器仅仅是演示和理解原理所用,力求简单易懂。有兴趣的朋友可以继续深入改造

要是现实一个 web 服务器,那么就需要大概了解 web 服务器的运行原理。先从静态的文本服务器开始,以访问 web 服务器的1.htML为例

1.客户端通过发送一个 http 请求到服务器,如果服务器监听的端口号是9002,那么在本机自身测试访问的地址就是

http://localhost:9002/1.html

2.服务器监听着9002端口,那么在收到请求了请求之后,就能从 http head 头中获取到请求里需要访问的 uri 资在web 目录中的位置。

3.服务器读取需要访问的资源文件,然后填充到 http 的实体中返回给客户端。

示意图如下:

PHP实现动态web服务器方法

<PRe class="brush:PHp;"> PHP ip = $ip; $this->port = $port; $this->await(); } private function awaIT() { $sock = socket_create(AF_inet,SOCK_STREam,SOL_TCP); if ($sock < 0)="" {="" echo="" "error:"="" .="" socket_strerror(socket_last_error())="" .="" "\n";="" }="" $ret="socket_bind($sock,$this-">ip,$this->port); if (!$ret) { echo "BIND Failed:" . socket_strerror(socket_last_error()) . "\n"; exit; } echo "OK\n"; $ret = socket_listen($sock); if ($ret < 0)="" {="" echo="" "listen="" failed:"="" .="" socket_strerror(socket_last_error())="" .="" "\n";="" }="" do="" {="" $new_sock="null;" try="" {="" $new_sock="socket_accept($sock);" }="" catch="" (exception="" $e)="" {="" echo="" $e-="">getMessage(); echo "ACCEPT Failed:" . socket_strerror(socket_last_error()) . "\n"; } try { $request_string = socket_read($new_sock,1024); $response = $this->output($request_string); socket_write($new_sock,$response); socket_close($new_sock); } catch (Exception $e) { echo $e->getMessage(); echo "READ Failed:" . socket_strerror(socket_last_error()) . "\n"; } } while (TRUE); } /** * @param $request_string * @return string */ private function output($request_string){ // 静态 GET /1.html HTTP/1.1 ... $request_array = explode(" ",$request_string); if(count($request_array) < 2){="" return="" $this-="">not_found(); } $uri = $request_array[1]; $filename = web_config::WEB_ROOT . $uri; echo "request:".$filename."\n"; // 静态文件的处理 if (file_exists($filename)) { return $this->add_header(file_get_contents($filename)); } else { return $this->not_found(); } } /** * 404 返回 * @return string */ private function not_found(){ $content = "

File Not Found

"; return "HTTP/1.1 404 File Not Found\r\nContent-tyPE: text/html\r\nContent-Length: ".strlen($content)."\r\n\r\n".$content; } /** * 加上头信息 * @param $string * @return string */ private function add_header($string){ return "HTTP/1.1 200 OK\r\nContent-Length: ".strlen($string)."\r\nServer: mengkang\r\n\r\n".$string; } } $server = new server("127.0.0.1",web_config::PORT);

脚本宝典总结

以上是脚本宝典为你收集整理的PHP实现动态web服务器方法全部内容,希望文章能够帮你解决PHP实现动态web服务器方法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: