1、php的调用过程

浏览器请求一个php文件的流程

test.php

 1 <html>
 2     <head>
 3         <meta http-equiv="content-type" content="text/html" charset="utf-8">
 4     </head>
 5     <body>
 6     <?php
 7         $i = 1 + 2;
 8         echo "结果是".$i;
 9     ?>
10     </body>
11 </html>

1、浏览器(http://localhost/test.php)解析主机名;

2、向HOST文件(127.0.0.1 localhost)查询主机对应的IP;

3、如果查询不到,跳到外网DNS;

4、浏览器向Apache服务器发出http请求

GET http://127.0.0.1/test.php HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36
Accept: */*
Accept-Encoding: gzip, deflate, sdch, br
Accept-Language: zh-CN,zh;q=0.8

5、Apache解析主机;

6、Apache解析站点/目录;

7、Apache解析资源(请求文件)名;

8、Apache请求文件(test.php);

9、test.php中<?php ……?>代码在服务器端执行,Apache返回结果给浏览器

HTTP/1.1 200 OK
Date: Mon, 12 Dec 2016 12:23:55 GMT
Server: Apache/2.4.23 (Win64) PHP/5.6.25
X-Powered-By: PHP/5.6.25
Content-Length: 137
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

<html>
    <head>
        <meta http-equiv="content-type" content="text/html" charset="utf-8">
    </head>
    <body>
        结果是3     </body>
</html>

10、浏览器显示返回结果。

时序图

时间: 2024-12-17 02:59:31

1、php的调用过程的相关文章

Servlet的调用过程_生命周期_继承结构

Servlet调用过程 浏览器上输入网站,dns解析域名成服务器的IP地址,浏览器带着一个请求行,和众多request请求头,找服务器. 1.分析请求的是哪台虚拟主机,查看Host请求头,如果没有Host请求头就访问缺省虚拟主机 2.分析访问的是当前虚拟主机中的哪个web资源,从请求行中分析出当前访问哪个web应用的资源 3.查找web.xml,查看有没有对应的虚拟路径 Servlet的生命周期 1.Servlet在第一次被访问到的时候,服务器创建出Servlet对象. 2.创建出对象之后,立即

.net ADF 中 Ajax 的调用过程.

图示是 .net ADF Ajax调用过程的简略过程: 1,2)当页面初始化之后, 浏览器一旦触发回调事件, 脚本函数负责处理回调信息, 并调用 ASP.NET 2.0/3.5 中的 WebForm_DoCallBack 函数, 将回调请求返回服务器. 其实质是利用 Microsoft.XMLHTTP 组件创建一个新的 HTTPRequest 对象,并将客户端请求异步发送回服务器. 3)客户端回调请求到达后,服务器初始化并调用继承ICallbackEventHandler接口的ADF组件或者Pa

Android学习Scroller(五)——详解Scroller调用过程以及View的重绘

MainActivity如下: package cc.ww; import android.os.Bundle; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.RelativeLayout; import android.widget.RelativeLayout.LayoutParams; import android.app.Activity;

Android Touch系统简介(二):实例详解onInterceptTouchEvent与onTouchEvent的调用过程

上一篇文章主要讲述了Android的TouchEvent的分发过程,其中有两个重要的函数:onInterceptTouchEvent和onTouchEvent,这两个函数可被重装以完成特定的逻辑.onInterceptTouchEvent的定义为于ViewGroup中,默认返回值为false,表示不拦截TouchEvent.onTouchEvent的定义位于View中,当ViewGroup要调用onTouchEvent时,会利用super.onTouchEvent.ViewGroup调用onTo

使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程

http://bbs.pediy.com/showthread.php?p=1354999 标 题: [原创]使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程.作 者: shayi时 间: 2015-02-12,05:19:54链 接: http://bbs.pediy.com/showthread.php?t=197829 使用IDA PRO+OllyDbg+PEview 追踪windows API 动态链接库函数的调用过程. (本文同步更

c++中六种构造函数的实现以及9中情况下,构造函数的调用过程

六种构造函数的实现代码如下: #include<iostream> using namespace std; //c++中六种默认的构造函数 class Test { public: Test(int d = 0):m_data(d)//1构造函数(带默认值0),以参数列表的形式初始化 { cout<<"Creat Test Obj :"<<this<<endl; } ~Test()//2析构函数 { cout<<"

函数的调用过程(栈帧)

1.什么是栈帧? 栈帧也叫过程活动记录,是编译器用来实现函数调用过程的一种数据结构.C语言中,每个栈帧对应着一个未运行完的函数.从逻辑上讲,栈帧就是一个函数执行的环境:函数调用框架.函数参数.函数的局部变量.函数执行完后返回到哪里等等.栈是从高地址向低地址延伸的.每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息.寄存器ebp指向当前的栈帧的底部(高地址),寄存器esp指向当前的栈帧的顶部(低地址). 2.Add()函数的调用过程 我们以Add()函数为例深入的研究一

Android Java 与 C++ 调用过程中的常量,路径名、文件名、后缀名最大长度

/**************************************************************************** **************************************************************************** *** ***   This header was automatically generated from a Linux kernel header ***   of the same

Hbase的WAL在RegionServer基本调用过程

版权声明:本文由熊训德原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/221 来源:腾云阁 https://www.qcloud.com/community Hbase是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群.本文档用于说明hbase的wal简单原理以及从源码的角度分析一个"写"请求是如何到达wal,wal又会做哪些请求.

堆栈桢的生成原理(调试器是如何生成堆栈的调用过程的)

一直比较好奇,调试器是如何生成堆栈的调用过程的,比如如下代码: int add(int a, int b){    return a + b;} int main(){    int c = add(1, 2);    system("pause"); return 0;} 调用Add时的堆栈截图如下: 调试器究竟是如何生成这个堆栈过程的呢? 我最初的理解调试器是根据EBP来生成该堆栈的,原理如下:可以看到按照上面的原理, 每次EBP里存放的都是当前函数的堆栈桢基址,所以我们只要一直递