资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

php怎么实现http服务

本文小编为大家详细介绍“php怎么实现http服务”,内容详细,步骤清晰,细节处理妥当,希望这篇“php怎么实现http服务”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

创新互联建站,为您提供网站建设公司网站制作、网站营销推广、网站开发设计,对服务成都iso认证等多个行业拥有丰富的网站建设及推广经验。创新互联建站网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!

目录结构:

http_serv.php文件

/**

*Http服务器

*/

classHttp{

private$host;

private$port;

private$_root;

public$mime_types=array(

'avi'=>'video/x-msvideo',

'bmp'=>'image/bmp',

'css'=>'text/css',

'doc'=>'application/msword',

'gif'=>'image/gif',

'htm'=>'text/html',

'html'=>'text/html',

'ico'=>'image/x-icon',

'jpe'=>'image/jpeg',

'jpeg'=>'image/jpeg',

'jpg'=>'image/jpeg',

'js'=>'application/x-javascript',

'mpeg'=>'video/mpeg',

'ogg'=>'application/ogg',

'png'=>'image/png',

'rtf'=>'text/rtf',

'rtx'=>'text/richtext',

'swf'=>'application/x-shockwave-flash',

'wav'=>'audio/x-wav',

'wbmp'=>'image/vnd.wap.wbmp',

'zip'=>'application/zip',

);

/**

*@paramstring$host监听地址

*@paramint$port监听端口

*@paramstring$_root网站根目录

*/

publicfunction__construct($host,$port,$_root){

$this->host=$host;

$this->port=$port;

$this->_root=$_root;

}

/**

*启动http服务

*/

publicfunctionstart(){

//创建socket套接字

$socket=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);

//设置阻塞模式

socket_set_block($socket);

//为套接字绑定ip和端口

socket_bind($socket,$this->host,$this->port);

//监听socket

socket_listen($socket,4);

while(true)

{

//接收客户端请求

if(($msgsocket=socket_accept($socket))!==false){

//读取请求内容

$buf=socket_read($msgsocket,9024);

preg_match("/\/(.*)HTTP\/1\.1/",$buf,$matchs);

preg_match("/Accept:(.*?),/",$buf,$matchss);

//获取接收文件类型

$type=explode("/",$matchss[1])[0];

if($type=="text"){

$content=$this->GetString($matchs[1]);

}else{

$content=$this->GetImg($matchs[1]);

}

socket_write($msgsocket,$content,strlen($content));

socket_close($msgsocket);

}

}

}

/**

*组装消息头信息模板

*@paramint$code状态码

*@paramstring$status状态名称

*@paramstring$content发送的文本内容

*@paramstring$content_type发送的内容类型

*@returnstring

**/

publicfunctionGetHeaders($code,$status,$content="",$content_type="text/html;charset=utf-8"){

$header='';

$header.="HTTP/1.1{$code}{$status}\r\n";

$header.="Date:".gmdate('D,dMYH:i:sT')."\r\n";

$header.="Content-Type:{$content_type}\r\n";

$header.="Content-Length:".strlen($content)."\r\n\r\n";//必须2个\r\n表示头部信息结束

$header.=$content;

return$header;

}

/**

*组装文本发送信息

*@paramstring$url_path

*@returnstring

**/

publicfunctionGetString($url_path){

if($this->getRealPath($url_path)){

if(is_readable($this->getRealPath($url_path))){

return$this->GetHeaders(200,"OK",file_get_contents($this->getRealPath($url_path)),$this->getMime($url_path));

}else{

return$this->GetHeaders(401,"Unauthorized");

}

}else{

return$this->GetHeaders(404,"NotFound");

}

}

/**

*组装资源返回信息

*@paramstring$url_path

*@returnstring

**/

publicfunctionGetImg($url_path){

if($this->getRealPath($url_path)){

return$this->GetHeaders(200,"OK",file_get_contents($this->getRealPath($url_path)),$this->getMime($url_path));

}else{

return$this->GetHeaders(404,"NotFound");

}

}

/**

*获取资源类型

*@paramstring$path

*@returnmixed

*/

publicfunctiongetMime($path){

$type=explode(".",$path);

$mime=$this->mime_types[$type[1]];

return$mime;

}

/**

*获取访问资源的真实地址

*@param$url_path

*@returnbool|string

*/

publicfunctiongetRealPath($url_path){

returnrealpath($this->_root."/".$url_path);

}

}

$server=newHttp("127.0.0.1",3046,"wwwroot");

$server->start();

读到这里,这篇“php怎么实现http服务”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注创新互联行业资讯频道。


文章标题:php怎么实现http服务
转载来于:http://cdkjz.cn/article/igogii.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220