`
liuzhaomin
  • 浏览: 207472 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Apache main函数执行流程

阅读更多

变量:

process_rec,a structure that represents one process。

 

struct process_rec { apr_pool_t *pool; //全局池 apr_pool_t *pconf; //配置池 int argc; //参数个数 const char * const *argv; //参数 const char *short_name; };//表示进程的数据结构

 

apr_pool_t:基本池类型

 

1: AP_MONCONTROL(0); 代码剖析控制

 

2: process = init_process(&argc, &argc); //进程初始化,process代表主进程信息。

 

3: apr_pool_create(&pcommands, pglobal);

      apr_pool_tag(pcommands, "pcommands");

      pcommands --> 命令行参数池

 

4: error = ap_setup_prelinked_modules(process); //将所有预连接的模块加入到加载模块链表中。

 

5: ap_run_rewrite_args(process);

rewrite_args是为MPM模块设置的,允许MPM模块对命令行中的传入参数进行重写。

 

6: 参数处理

apr_getopt_t *opt;

apr_getopt_init(&opt, pcommands, process->argc, process->argv);

处理参数传入opt。

while((rv=apr_getopt(opt, AP_SERVER_BASEARGS, &c, &optarg)) == APR_SUCCESS) {

char **new;

switch(c) {

case 'c':

}

}

 

7: apr_pool_create(&plog, pglobal);

apr_pool_tag(plog, "plog");

内存池,内存池树

 

8: ap_replace_stderr_log(process->pool, temp_error_log);

输出日志文件替换。

 

9: 读取配置

server_conf = ap_read_config(process, ptemp, confname, &ap_conftree);

解析成配置树。

 

10: ap_run_pre_config(pconf, plog, ptemp);

触发模块的pre_config挂钩,是模块可以修改配置树。

 

11: ap_process_config_tree

处理配置树。

 

12: signal_server = APR_RETRIEVE_OPTIONAL_FN(ap_signal_server);

ap_run_post_config(pconf, plog, ptemp, server_conf);

 

13: for(;;) 主循环

请求处理被分割为多个挂钩阶段,每个阶段实现一个特定的任务,开发人员注册挂钩。Apache会自动执行所有挂钩函数。

 

 

分享到:
评论

相关推荐

    org.apache.felix.main-6.0.3.rar

    标题 "org.apache.felix.main-6.0.3.rar" 提供了我们即将探讨的核心信息:这是Apache Felix项目的一个版本,具体来说是6.0.3版本。Apache Felix是一个开源实现,它遵循OSGi(开放服务网关倡议)规范,用于创建Java...

    java中main方法发送httpPost请求

    5. **执行请求并获取响应** 发送请求并读取响应状态码: ```java connection.connect(); int responseCode = connection.getResponseCode(); ``` 6. **处理响应** 读取服务器返回的数据,可能是JSON、XML或...

    apache zookeeper使用方法实例详解

    在 Executor 类中,main 方法负责解析命令行参数,创建 Executor 对象,并启动 Executor 的 run 方法。Executor 构造函数中,会创建 ZooKeeper 对象和 DataMonitor 对象,并初始化一些基本参数。在 run 方法中,会...

    java调用python中的自定义函数函数

    本文将深入探讨如何在Java中调用Python的自定义函数,特别是执行加法运算。我们将重点关注以下几个方面:Java与Python的互操作性、使用Apache的Jython库以及实际的代码示例。 首先,我们要理解Java与Python之间的互...

    Apache+PHP+MySql 绿色管理

    绿色管理包提供的`main.aau`、`default.aproj`可能是项目的启动或配置文件,它们可能是某种定制的打包格式,用于保存和管理整个环境的设置和依赖。`lib`目录可能包含了Apache、PHP和MySQL运行所需的库文件,这些文件...

    Apache Server源代码分析

    1. **主程序(Main Program)**:Apache服务器的启动点,通常在`httpd`或`apache2`可执行文件中。这部分代码负责初始化进程环境,加载配置文件,以及创建并管理子进程。 2. **模块系统(Module System)**:Apache...

    Apache Commons Math3探索之多项式曲线拟合实现代码

    Apache Commons Math3是一个...总的来说,Apache Commons Math3提供了一种简单而强大的方式来执行多项式曲线拟合。通过合理选择拟合阶数和正确处理数据,我们可以利用这个库解决各种数学和工程问题中的曲线拟合挑战。

    Apache 2.0.39源代码

    4. **网络通信**:Apache使用Berkeley套接字API与客户端进行网络通信,源代码中的core.c和http_core.c文件包含了这些关键函数。 5. **请求处理**:Apache接收HTTP请求后,会将请求分派给相应的模块处理。这部分逻辑...

    openwhisk-runtime-java:Apache OpenWhisk运行时Java支持以Java和其他JVM托管语言编写的Apache OpenWhisk函数。

    适用于Java的Apache OpenWhisk运行时变更日志快速Java动作Java动作是具有称为main的方法的Java程序,该方法具有如下确切的签名: public static com.google.gson . JsonObject main( com.google.gson . JsonObject )...

    大数据 java hive udf函数的示例代码(手机号码脱敏)

    同时,我们还添加了 Maven 的编译插件和打包插件,以便生成可执行的 JAR 包。 在实现 UDF 函数时,我们需要继承 Hive 的 UDF 类,例如: ```java public class PhoneUnlookU extends UDF { public String ...

    Springboot 结合Apache Spark 2.4.4与Scala 2.12 集成示例

    Spring Boot以其便捷的微服务开发能力,而Apache Spark是大数据处理领域中的一员猛将,Scala则作为Spark的主要编程语言,提供了强大的面向对象和函数式编程特性。通过整合这三者,我们可以构建高效、易维护的数据...

    Learning Apache Spark 2

    驱动器程序运行用户程序的main()函数并创建SparkContext,而执行器是运行在工作节点上的进程,它们负责执行任务并返回结果给驱动器。SparkContext连接到集群管理器,它是一个分配资源和调度执行的任务的系统。在...

    Maven 生成打包可执行jar包的方法步骤

    2. JAR包应可执行,可以从不同类中的Main函数启动。 3. 项目源码和第三方依赖的JAR包要分开打包。 4. 项目中的执行脚本需要一起打包并分类。 5. "document"目录下的"readme.txt"文件应放在压缩包的根目录下,其他...

    openwhisk-runtime-swift:Apache OpenWhisk运行时Swift支持以Swift编写的Apache OpenWhisk函数

    Swift的Apache OpenWhisk运行时 变更日志 快速动作 简单的快速动作hello.swift 对字典的传统支持仍然有效: import Foundation func main ( args : [ String : Any ]) -> [ String : Any ] { if let name = ...

    网易云自动打卡听歌云函数

    8. **定时任务**:为确保每天定时执行,项目可能使用了服务器的定时任务服务(如Linux的Cron或Windows的任务计划程序)或Python的定时任务库(如APScheduler)。 通过这个项目,开发者可以学习到Python自动化、云...

    cpp-main.rar

    在C++编程中,"main()"函数是程序执行的起点,开发者在这里定义程序的行为和流程。 标签为"源码",意味着压缩文件内含的是未编译的C++源代码文件,可能是.cpp或.hpp扩展名的文件。源码文件允许我们查看和修改程序的...

    apache-hive-3.1.2-bin.tar.gz

    6. **metastore-server/src/main/resources/META-INF**:Hive元数据存储的相关信息,元数据存储了表、分区、列等信息。 7. **serde** 和 **udf** 目录:包含了序列化/反序列化(SerDe)库和用户定义函数(UDF),...

    org.apache_xpgod.zip

    通常,源代码会按照模块或类库的组织结构进行划分,例如`src/main/java`目录下会按照包名结构放置`.java`源文件,而`src/test/java`则包含测试代码。如果想深入了解这个库,可以查看源码中的`org.apache.commons....

    Apache log4cxx在C++多进程多线程下的使用.pdf

    在 StdAfx.h 文件中包函调用 Apache Log4cxx 的头文件信息,然后在 Trace.cpp 文件中实现封装类的方法,最后在 main 函数中实例化封装类对象,使用日志服务组件。 Apache log4cxx 是一个功能强大且灵活的日志记录...

    apache-hive-1.2.1-src

    了解Hive源码有助于开发人员深入理解其工作流程,例如优化查询性能、开发新的SerDes或自定义函数。同时,对于系统管理员,掌握源码也有助于更好地调试和维护Hive环境。 总的来说,Apache Hive 1.2.1源码提供了一个...

Global site tag (gtag.js) - Google Analytics