位置: 编程技术 - 正文

如何用PHP来实现一个动态Web服务器(php使用教程)

编辑:rootadmin

推荐整理分享如何用PHP来实现一个动态Web服务器(php使用教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php示例,如何用php来实现数字,php功能实现,php使用教程,php zmq,如何用php来实现数字,用php写个简单的编程,php编写,内容如对您有帮助,希望把文章链接给更多的朋友!

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

1.客户端通过发送一个 http 请求到服务器,如果服务器监听的端口号是,那么在本机自身测试访问的地址就是 http head 头中获取到请求里需要访问的 uri 资源在web 目录中的位置。

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

示意图如下:

Notice: Undefined index: CMSdown in /data/webroot/gcms/lib/Api/Open/Article.php on line img////_dbcc9ac.png" alt="查看图片" />

如上代码所述,只要在终端执行该文件,那么一个静态的 web 服务器就启动啦。

下图为我访问我 web 目录下的1.jpg文件的截图

Notice: Undefined index: CMSdown in /data/webroot/gcms/lib/Api/Open/Article.php on line img////_dbcdbd.png" alt="查看图片" />

简单的静态 web 服务器已经完成了,下面的问题就是怎么让其支持动态内容的输出了。是不是只需要在 web 服务器内部执行完某个程序之后,把得到的结果返回给客户端就行呢?但是这样 web 服务器的代码就和业务代码耦合在一起了,怎么解决一个 web 服务器,可以运用在各个业务场景下呢?

CGI 的出现解决了这一问题。那么 CGI 是什么呢?下面这段话复制的:

CGI是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。CGI规范允许Web服务器执行外部程序,并将它们的输出发送给Web浏览器,CGI将Web的一组简单的静态超媒体文档变成一个完整的新的交互式媒体。

如何用PHP来实现一个动态Web服务器(php使用教程)

好晕,举个具体的例子,比如我们在使用的 PHP 的全局变量$_SERVER['QUERY_STRING']就是 Web 服务器通过 CGI 协议之上,传递过来的。例如在 Nginx 中,也许你记得这样的 fastcgi 配置

fastcgi_param QUERY_STRING $query_string;

没错 nginx 把自己的全局变量$query_string传递给了 fastcgi_param 的环境变量中。

下面我们也以CGI的QUERY_STRING作为桥梁,将客户端请求的 uri 中的信息传递到 cgi 程序中去。通过putenv的方式把QUERY_STRING存入该请求的环境变量中。

我们约定 Web 服务器中访问的资源是.cgi后缀则表示是动态访问,这一点有点儿类似于 nginx 里配置 location 来寻找 php 脚本程序一样。都是一种检查是否应该请求 cgi 程序的规则。为了和 Web 服务器区别开来,我用 C 写了一个查询用户信息的 cgi 程序,根据用户 id 查询用户资料。

大致的访问逻辑如下图

Notice: Undefined index: CMSdown in /data/webroot/gcms/lib/Api/Open/Article.php on line img////_dbc4cc9b6.png" alt="查看图片" />

演示代码地址: demo 需要做如下操作

1.修改config.php里的项目根目录WEB_ROOT

2.编译cgi-demouser.c,编译命令gcc -o user.cgi user.c,然后将user.cgi文件放入你配置的项目根目录下面

3.在终端执行php start.php ,这样该 web 服务器就启动了

4.通过 就可以访问看到如下效果了

Notice: Undefined index: CMSdown in /data/webroot/gcms/lib/Api/Open/Article.php on line img////_dbcbf0.png" alt="查看图片" />

其实只是在静态服务器的基础上做了一些 cgi 的判断是请求的转发处理,把github 上的三个文件的代码合并到一个文件里方便大家观看

标签: php使用教程

本文链接地址:https://www.jiuchutong.com/biancheng/284455.html 转载请保留说明!

上一篇:PHP之密码加密的几种方式(php加密后怎么运行)

下一篇:PHP实现动态web服务器方法(php动态网站开发项目教程)

  • 我国现行的增值税属于什么
  • 红冲的发票能不能取消
  • 建筑公司劳务分包抵扣分录
  • 本期免税额怎么填写
  • 回购股票注销股本,股价大涨案例
  • 公司购买汽车的购置税怎么做账
  • 工会经费入账
  • 社会组织属于非法人组织吗为什么
  • 职工食堂支出明细表
  • 未及时扣除的分数怎么算
  • 债权利息收入要交所得税吗
  • 企业间贴现手续怎么办理
  • 高新技术企业进项加计扣除
  • 电子承兑汇票没开通能接受吗
  • 受托加工费的成本都有什么
  • 外资企业所得税优惠政策
  • 医院开发票需要税号吗
  • 福利费的进项税额转出
  • 收到发票后怎么处理
  • 食堂伙食费需要开票吗
  • 应交增值税出口退税年末如何结转?
  • 小规模企业国税怎么报税
  • 技术转让时增值税怎么算
  • 已抵扣的增值税专票如何冲红
  • 生产型企业进口退税政策
  • 营业外支出所得税前可以扣除吗
  • 企业预缴电费会退回吗
  • 联想一体机如何调节屏幕亮度
  • 一篇不错的php基础论文
  • Win11错误提示"the pc must support secure boot"怎么解决
  • vue3中使用require
  • wordpress采集教程
  • php在线阅读器源代码
  • 原生php写接口
  • 企业在境外发生业务国外缴税后国内怎么做
  • php框架ci
  • php mysql_list_dbs()函数用法示例
  • node与nodejs
  • php递归算法经典题目
  • 魔改是啥
  • java多线程经典案例
  • 准予从销项税额中扣除的有哪些
  • 简单的记账方法叫什么
  • 用友怎么取消对账结果
  • 企业所得税怎么算
  • 收到费用报销单据应该怎么记账?
  • 自定义转账计算所得税费用
  • 增值税普票税额可以抵扣税吗
  • 政府补助的界定
  • 实收资本什么情况下会增加
  • 农民专业合作社法
  • 销售净利率指标的计算是净利润与资产平均余额的比值
  • 因产品不合格退货流程
  • 固定资产的入账价值包括增值税吗?
  • 交通费属于什么部门
  • 购买商品发生的费用计入
  • 如何登记现金日记账视频
  • 新公司怎样
  • sqlserver解锁用户命令
  • 如何将windows安装到u盘
  • ubuntu zed
  • ubuntu怎么清理内存
  • linux命令合集
  • win10预览版好吗
  • 电脑显示器无信号键盘灯不亮
  • 在对linux系统中dir
  • win10系统应用更新
  • 前端html中怎么让文字左移
  • unity3d做游戏
  • Android调用jni获取mac地址
  • 微博html代码
  • ubuntu各种方法卸载软件
  • 个体 税务登记
  • 增值税发票税控开票软件客服
  • 契税退税进度怎么查询
  • 税局可以办理哪些业务
  • 云南人社12333app官网
  • 什么是个税扣缴期限
  • 误餐费报销管理办法
  • 收心归位经典语录短句
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设