好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

php记录执行过程 php如何记录日志

很多站长朋友们都不太清楚php记录执行过程,今天小编就来给大家整理php记录执行过程,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 thinkphp 模板与控制器之间执行过程 2、 php底层原理 php是如何运行的 3、 php语言的执行过程 4、 PHP程序的运行的时候会显示程序执行的过程是怎么回事? thinkphp 模板与控制器之间执行过程

ThinkPHP中的跨控制器调用与框架执行流程

一、跨控制器调用

UserController.class.php

<?php

namespace Home/Controller

use Think/Controller

class UserController extends Controller{

public function show(){

//TODO

}

}

复制代码

IndexController.class.php(方法一)

复制代码

<?php

namespace Home/Controller

use Think/Controller

class IndexController extends Controller{

public function count(){

//通过快捷函数来实例化一个控制器

//User为控制器名

$user = A('User');

$user-> show();

}

}

IndexController.class.php(方法二)

<?php

namespace Home/Controller

use Think/Controller

class IndexController extends Controller{

public function count(){

//User为控制器名,show为其方法

R('User/show');

}

}

二、ThinkPHP执行流程

当一个客户端发起一个请求的时候先去访问应用入口文件

<?php

// 应用入口文件

// 检测PHP环境

if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');

// 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false

define('APP_DEBUG',True);

// 引入ThinkPHP入口文件

require 'ThinkPHP/ThinkPHP.php';

在应用入口文件中引入TinkPHP框架的入口文件,然后执行该文件中的代码。

在TinkPHP.php中做了一些初始化操作,比如定义了大量的全局常量,运行环境检测等

ThinkPHP.php

<?php

// 记录开始运行时间

$GLOBALS['_beginTime'] = microtime(TRUE);

// 记录内存初始使用

define('MEMORY_LIMIT_ON',function_exists('memory_get_usage'));

if(MEMORY_LIMIT_ON) $GLOBALS['_startUseMems'] = memory_get_usage();

// 版本信息

const THINK_VERSION = '3.2.3';

// URL 模式定义

const URL_COMMON = 0; //普通模式

const URL_PATHINFO = 1; //PATHINFO模式

const URL_REWRITE = 2; //REWRITE模式

const URL_COMPAT = 3; // 兼容模式

// 类文件后缀

const EXT = '.class.php';

// 系统常量定义

defined('THINK_PATH') or define('THINK_PATH', __DIR__.'/');

defined('APP_PATH') or define('APP_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/');

defined('APP_STATUS') or define('APP_STATUS', ''); // 应用状态 加载对应的配置文件

defined('APP_DEBUG') or define('APP_DEBUG', false); // 是否调试模式

if(function_exists('saeAutoLoader')){// 自动识别SAE环境

defined('APP_MODE') or define('APP_MODE', 'sae');

defined('STORAGE_TYPE') or define('STORAGE_TYPE', 'Sae');

}else{

defined('APP_MODE') or define('APP_MODE', 'common'); // 应用模式 默认为普通模式

defined('STORAGE_TYPE') or define('STORAGE_TYPE', 'File'); // 存储类型 默认为File

}

defined('RUNTIME_PATH') or define('RUNTIME_PATH', APP_PATH.'Runtime/'); // 系统运行时目录

defined('LIB_PATH') or define('LIB_PATH', realpath(THINK_PATH.'Library').'/'); // 系统核心类库目录

defined('CORE_PATH') or define('CORE_PATH', LIB_PATH.'Think/'); // Think类库目录

defined('BEHAVIOR_PATH')or define('BEHAVIOR_PATH', LIB_PATH.'Behavior/'); // 行为类库目录

defined('MODE_PATH') or define('MODE_PATH', THINK_PATH.'Mode/'); // 系统应用模式目录

defined('VENDOR_PATH') or define('VENDOR_PATH', LIB_PATH.'Vendor/'); // 第三方类库目录

defined('COMMON_PATH') or define('COMMON_PATH', APP_PATH.'Common/'); // 应用公共目录

defined('CONF_PATH') or define('CONF_PATH', COMMON_PATH.'Conf/'); // 应用配置目录

defined('LANG_PATH') or define('LANG_PATH', COMMON_PATH.'Lang/'); // 应用语言目录

defined('HTML_PATH') or define('HTML_PATH', APP_PATH.'Html/'); // 应用静态目录

defined('LOG_PATH') or define('LOG_PATH', RUNTIME_PATH.'Logs/'); // 应用日志目录

defined('TEMP_PATH') or define('TEMP_PATH', RUNTIME_PATH.'Temp/'); // 应用缓存目录

defined('DATA_PATH') or define('DATA_PATH', RUNTIME_PATH.'Data/'); // 应用数据目录

defined('CACHE_PATH') or define('CACHE_PATH', RUNTIME_PATH.'Cache/'); // 应用模板缓存目录

defined('CONF_EXT') or define('CONF_EXT', '.php'); // 配置文件后缀

defined('CONF_PARSE') or define('CONF_PARSE', ''); // 配置文件解析方法

defined('ADDON_PATH') or define('ADDON_PATH', APP_PATH.'Addon');

// 系统信息

if(version_compare(PHP_VERSION,'5.4.0','<')) {

ini_set('magic_quotes_runtime',0);

define('MAGIC_QUOTES_GPC',get_magic_quotes_gpc()? true : false);

}else{

define('MAGIC_QUOTES_GPC',false);

}

define('IS_CGI',(0 === strpos(PHP_SAPI,'cgi') || false !== strpos(PHP_SAPI,'fcgi')) ? 1 : 0 );

define('IS_WIN',strstr(PHP_OS, 'WIN') ? 1 : 0 );

define('IS_CLI',PHP_SAPI=='cli'? 1 : 0);

if(!IS_CLI) {

// 当前文件名

if(!defined('_PHP_FILE_')) {

if(IS_CGI) {

//CGI/FASTCGI模式下

$_temp = explode('.php',$_SERVER['PHP_SELF']);

define('_PHP_FILE_', rtrim(str_replace($_SERVER['HTTP_HOST'],'',$_temp[0].'.php'),'/'));

}else {

define('_PHP_FILE_', rtrim($_SERVER['SCRIPT_NAME'],'/'));

}

}

if(!defined('')) {

$_root = rtrim(dirname(_PHP_FILE_),'/');

define('', (($_root=='/' || $_root=='\\')?'':$_root));

}

}

// 加载核心Think类 ThinkPHP/Library/Think/Think.class.php

require CORE_PATH.'Think'.EXT;

// 应用初始化,调用Think类的静态方法start()

Think\Think::start();

Think.class.php

View Code

在start方法中主要的工作就是读取配置文件信息(Tinkphp/Mode/common.php, Thinkphp/Conf/convention.php),引入核心文件(Thinkphp/Library/Think),如果是应用模式则会生成runntime.php文件,如果框架被第一次调用还会为了我们生成应用目录。在start最后调用了App:run()静态方法。

App.class.php

View Code

在该类中有两个重要的方法,init()和exec()方法。init()主要进行路由解析,看用户是请求那个模块下的哪个控制器的方法。而exec()则是根据init()解析的结果通过反射机制来实例化一个Controller并并调用相应的方法。

总结

通过流程分析来看,这个框架主要由三个文件构成ThinkPHP.php,Think.class.php, App.class.php,当然还有其它的一些辅助类或方法来帮助完成整个响应。

php底层原理 php是如何运行的

1、PHP动态语言执行过程:拿到一段代码后,经过词法解析、语法解析等阶段后,源程序会被翻译成一个个指令(opcodes),然后ZEND虚拟机顺次执行这些指令完成操作。PHP本身是用C实现的,因此最终调用的也是C的函数,实际上,我们可以把PHP看做一个C开发的软件。

2、PHP的4层运行体系:

(1)Zend引擎:Zend整体用纯C实现,是PHP的内核部分,他将PHP代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、实现了基本的数据结构(如:hashtable、OO)、内存分配机制及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕Zend实现。

(2)Extensions:围绕着Zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(array系列)、标准库等都是通过extension来实现,用户也可以根据需要实现自己的extension的典型应用)。

(3)Sapi:Sapi全称ServerApplicationProgrammingInterface,也就是服务端应用编程接口,Sapi通过一系列钩子函数,使得PHP可以和外围交互数据,这是PHP非常优雅和成功的设计,通过sapi成功的将PHP本身和上层应用解耦隔离,PHP可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。

(4)上层应用:这就是我们平时编写的PHP程序,通过不同的spai方式得到各种各样的应用模式,如何通过webserver实现web应用、在命令行下已脚本方式运行等等。

php语言的执行过程

php执行顺序是从上往下执行的。执行前先从上往下检查有无语法错误,像少分号括号什么的,没有则将整个程序读入内存,然后在执行内存中的程序。所以一旦执行起来,如果程序还没执行完,你改程序不会起作用的

PHP程序的运行的时候会显示程序执行的过程是怎么回事?

提示上不是说了么,system\verify.php 第33行,使用了未定义的常量 rich_check_number

可以在服务器上通过修改php.ini实现屏蔽、自由显示错误信息

display_errors = On 修改为 Off可不显示所有错误信息

error_reporting是更改错误显示级别的

关于php记录执行过程的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于php记录执行过程 php如何记录日志的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did209766
更新时间:2023-05-03   阅读:19次

上一篇: php动态输出时间 php设置执行时间

下一篇:关于hzwapu.php的信息

最新资料更新

  • 1.php比较运算符价格 php中用于比较字符串的函数
  • 2.php文本转字节 php字符转换成数字
  • 3.php用户资料转移 php迁移java
  • 4.phpwsdl调用 php调用php文件
  • 5.php相除保留到分 php除法保留小数
  • 6.php美国东部时间 美国东部时间 换算
  • 7.phpfpm出错 php报错信息
  • 8.php图片上传及显示 php 图片上传
  • 9.php代理访问源码 php 代理
  • 10.php判断对象函数 php判断为空的方法有哪些
  • 11.php变量获取图片 php调用图片
  • 12.vista打不开php php页面打不开
  • 13.php配置smtp php配置文件的文件名是什么
  • 14.php批量取中间 php批量删除数据
  • 15.朔州php后台开发 朔州php培训招聘
  • 16.phpisset多个值 php __set __get
  • 17.php数组逗号分隔 php中的输出语句 能使用逗号分隔多个表达式
  • 18.php推荐接口排重 接口 php
  • 19.怎么开发一个php项目 php项目开发流程
  • 20.如何知道php密码 php确认密码

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]