PHP实现模拟http请求的方法分析


Posted in PHP onDecember 20, 2017

本文实例讲述了PHP实现模拟http请求的方法。分享给大家供大家参考,具体如下:

在http简析中,我们提到了浏览器请求资源的一个流程,那么这个流程能不能用php来模拟呢?答案是肯定的。

php模拟http请求需要实现以下步骤:

1.连接apache服务器

使用fsockopen:专门用于连接服务器,得到一个连接资源

2.写入http协议

使用fwrite向资源写入内容

3.接收数据

请求成功后返回的数据会被存放在资源中

4.解析数据:

使用fgets,和fgetc函数

实现代码:

<?php
  //php模拟发出http请求
  //1.连接目标服务器apache
  $f=fsockopen('localhost',98,$erron,$error);
  //2.写入http协议
  //2.1拼凑http协议
  //请求行
  $http="GET /phpstudy/index.php HTTP/1.1\r\n";
  //请求头
  $http .="Host:localhost\r\n";
  //空行
  $http .="\r\n";
  //2.2写给apache服务器
  if(fwrite($f,$http))
  {
    //写入成功
    //3.数据已经接收并存放在f资源中
    //4.解析资源
    //循环遍历
    while($line=fgets($f,1024))
    {
      //输出
      echo $line ."</br>";
    }
  }

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php 之 没有mysql支持时的替代方案
Oct 09 PHP
php的一个登录的类 [推荐]
Mar 16 PHP
批量去除PHP文件中bom的PHP代码
Mar 13 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
Feb 06 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
PHP开发注意事项总结
Feb 04 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
PHP实现Session入库/存入redis的方法
May 04 PHP
PHP htmlspecialchars_decode()函数用法讲解
Mar 01 PHP
PHP中的自动加载操作实现方法详解
Aug 06 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 #PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 #PHP
PHP实现的最大正向匹配算法示例
Dec 19 #PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 #PHP
PHP实现的折半查找算法示例
Dec 19 #PHP
php之header的不同用法总结(实例讲解)
Nov 28 #PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
Nov 28 #PHP
You might like
小偷PHP+Html+缓存
2006/12/20 PHP
用PHP读取超大文件的实例代码
2012/04/01 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
2016/01/08 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
php实现用户登陆简单实例
2017/04/04 PHP
php xhprof使用实例详解
2019/04/15 PHP
详解提高使用Java反射的效率方法
2019/04/29 PHP
让whoops帮我们告别ThinkPHP6的异常页面
2020/03/02 PHP
jQuery拖拽 &amp; 弹出层 介绍与示例
2013/12/27 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
layui 选择列表,打勾,点击确定返回数据的例子
2019/09/02 Javascript
JavaScript直接调用函数与call调用的区别实例分析
2020/05/22 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
利用Python实现图书超期提醒
2016/08/02 Python
python如何查看系统网络流量的信息
2016/09/12 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
2018/08/04 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
国际会议邀请函范文
2014/01/16 职场文书
初中生自我鉴定
2014/02/04 职场文书
小学生竞选班长演讲稿
2014/04/24 职场文书
鼓舞士气的口号
2014/06/16 职场文书
争做文明公民倡议书
2014/08/29 职场文书
保证书格式
2015/01/16 职场文书
感恩节寄语2015
2015/03/24 职场文书
怎样写观后感
2015/06/19 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python