ThinkPHP3.2.2调试模式下正常访问,关闭调试模式,部署时出现删出缓存第一次没错,第二次开始错误。

本文记录了一次在ThinkPHP3.2.2框架中遇到的部署问题及解决方案,详细介绍了从发现问题到定位问题再到最终解决问题的全过程。

我碰到的错误如下:

ThinkPHP3.2.2 { Fast & Simple OOP PHP Framework } -- [ WE CAN DO IT JUST THINK ]

上图:


看到网上大多数人都碰到,但没很好解决,确实很头痛,没办法只能去阅读源码。在同事的帮助下,就愉快地去翻源,看框架执行流程:

1.从入口文件开始:index.php  里面有这句(require './ThinkPHP/ThinkPHP.php';),跳到ThinkPHP.php;

2.ThinkPHP.php 里面的96行:Think\Think::start();可以看到,跑这函数里面去了,跳到Think.class.php;

3.Think.class.php 因为是部署模式,所以执行到里面的42行Storage::load($runtimefile);发现没法跳了。直接去找ThinkPHP/Library/Storage.class.php;

4.Storage.class.php; 源码:static public function connect($type='File',$options=array()) {
        $class  =   'Think\\Storage\\Driver\\'.ucwords($type);
        self::$handler = new $class($options);
    }

我们看到,它去取到了一个叫“Flie”的文件,找了下在找到了它ThinkPHP/Library/Storage/File.class.php,打开看看。

5.File.class.php 里面果然有第3步的load方法,在代码75行。public function load($_filename,$vars=null){
        if(!is_null($vars))
           extract($vars, EXTR_OVERWRITE);
          include $_filename;
       }

最后锁定,错误是发生在这句代码。

6.可以测试下结果:(1).

public function load($_filename,$vars=null){
      if(!is_null($vars))
        extract($vars, EXTR_OVERWRITE);

echo $_filename;
      die();

        include $_filename;
 }

结果如下:


(2)删掉缓Runtime存再测.

public function load($_filename,$vars=null){
      if(!is_null($vars))
        extract($vars, EXTR_OVERWRITE);

        include $_filename;

echo $_filename;
      die();

 }

结果如下:


7.第6步结果可以看到,问题就出在include 这个文件./Application/Runtime/common~runtime.php时出错了。为什么呢?

文件如下:

8.在同事帮助下,终于知道原因,如图:是因为我Common/Common文件夹下的function.php引入了一个user.function.php路径有问题。

如果直接用require_once 'user.function.php';这样在部署情况下common~runtime.php就没办法正确解析,之前调试模式是没问题的。

最后我们在导入文件的时候加上正确路径就可以了:如图改成require_once APP_PATH.'Common/Common/'user.function.php';,问题到这里就解决了。


最后再说明一点:记得关闭调试模式,要把Runtime文件夹删除,到时测试成功通过。

如果你碰到的是和我一样的问题,希望能帮到你,最后希望转载的小朋友,加上原创链接,费老大劲才弄出来的;




随着工业控制、汽车电子、航空航天等领域对嵌入式系统实性要求的不断提升,嵌入式实操作系统(RTOS)的调度延迟已成为制约系统性能的关键因素。FreeRTOS作为一款广泛应用的开源实操作系统,其抢占式调度机制在面对高优先级任务密集触发的场景,仍存在调度延迟不确定、抖动较大等问题,难以满足毫秒级甚至微秒级的实响应需求。本文针对FreeRTOS调度延迟优化展开深入研究,旨在通过分析调度延迟来源、优化中断临界区与优先级继承协议,显著降低调度抖动,提升系统实性与确定性。本文首先对FreeRTOS抢占式调度机制进行系统性剖析,识别中断响应延迟、任务切换开销、优先级翻转以及中断临界区过长等四大延迟来源。针对中断临界区问题,提了基于精细粒度锁的优化策略,将原有关键段保护范围从完整函数缩小至最小必要代码块,同采用编译器指令优化上下文切换流程,使中断临界区长度缩短约40%。在优先级继承协议方面,改进了协议的执行流程,引入延迟继承机制,避免不必要的优先级调整操作,将优先级继承的平均耗降低约35%。此外,对任务切换过程中的寄存器保存与恢复策略进行了优化,通过汇编级优化减少了约20%的任务切换间。实验结果表明,优化后的系统中断响应间从平均4.2μs降低至2.5μs,任务切换间从平均3.8μs降低至3.0μs,最大调度抖动从12.5μs降低至5.2μs,最坏情况执行间降低约38%。 【课程报告内容】 摘要 第1章 绪论 第2章 相关技术与理论基础 第3章 FreeRTOS调度延迟来源分析 第4章 调度延迟优化方案设计 第5章 优化方案详细实现 第6章 性能测试平台搭建与实验分析 第7章 总结与展望 参考文献
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值