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

本文探讨了在非默认模块中使用定时任务时遇到的配置文件读取问题,特别是在Data模块下,定时任务偶尔无法正确读取配置文件,影响了如微信模板消息等功能的稳定性。文章提出了两种解决方案:使用绝对路径或在公共配置文件中包含所有配置。

一开始创建就有一个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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值