thinkphp3.2.3定时任务 不能获取本模块config, 不能获取本模块的其他配置

一开始创建就有一个home模块
再创建一个Data模块

定时任务在/Application/Common/Conf/crons.php中,这里不讲怎么创建定时任务。

Data模块的配置文件路径如下
/Application/Data/Conf/config.php


定时任务中的逻辑是会调用Data模块的代码,竟然无法读取到Data中的配置文件,或者是4次有1次能读到配置,这个太不稳定了也不正常。

如果使用Data模块的接口调用,就可以读到配置文件。

对我产生的影响:
1. 微信模板消息是读取Data下的自定义的json模板,使用Data测试接口模板消息正常发送,上线后在定时任务中就不正常。
2. 定时任务中无法读取到Data中config.php的一些固定数据,这个发现比较及时。


最终怀疑到定时任务读取路径上,输出日志后果然是这样
后来打日志追踪配置文件路径,使用MODULE_PATH输出路径
20%的概率输出
/Application/Data/Conf/config.php
80%的概率输出
/Application/Home/Conf/config.php

这太TM坑了。

结论:
如果不用定时任务使用Data模块中接口去读Data模块的配置,就没有问题。
使用定时任务各种路径和配置会以默认模块Home为准。
解决办法一:使用绝对路径
解决办法二:将配置写入全局的配置文件中 /Application/Common/Conf中

如果在非默认模块Home下有自定义的json模板文件等,可以使用方法一

原文地址:https://www.cnblogs.com/yuzhould/p/9944836.html