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建立连接并执行SQL语句的代码
Jul 04 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
Zend的AutoLoad机制介绍
Sep 27 PHP
解析PHP高效率写法(详解原因)
Jun 20 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
ThinkPHP之用户注册登录留言完整实例
Jul 22 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
Oct 18 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
PHP调用其他文件中的类
Apr 02 PHP
PHP函数按引用传递参数及函数可选参数用法示例
Jun 04 PHP
PHP针对redis常用操作实例详解
Aug 17 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 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
半角全角相互转换的js函数
2009/10/16 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
jquery阻止冒泡事件使用模拟事件
2013/09/06 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
深入探究node之Transform
2017/07/20 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
对Python random模块打乱数组顺序的实例讲解
2018/11/08 Python
对python修改xml文件的节点值方法详解
2018/12/24 Python
Python基于WordCloud制作词云图
2019/11/29 Python
浅谈PyQt5中异步刷新UI和Python多线程总结
2019/12/13 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
2020/08/18 Python
python 如何上传包到pypi
2020/12/24 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
预备党员转正思想汇报
2014/09/26 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL
Golang使用Panic与Recover进行错误捕获
2022/03/22 Golang
Django框架中表单的用法
2022/06/10 Python