【发布时间】:2023-03-05 23:34:01
【问题描述】:
在我的 CodeIgniter 网站上,我使用类似的东西来区分实时环境和开发环境。
if (defined('STDIN') || $_SERVER['SERVER_NAME']=='livesite.com') {
define('ENVIRONMENT', 'production');
} else {
define('ENVIRONMENT', 'development');
}
然后,根据环境,我的代码设置适当的数据库配置。
我还有几个通过 PHP 运行的 CRON 作业,有效地在站点内运行某些代码。
当我运行使用此代码的 CRON 作业时,它们似乎只是默认为生产环境。所以我在 dev 上运行的所有 CRON 仍然连接到生产数据库。如何修改上面的代码以与 CRON 一起使用?我只需要一种方法来检测 CRON 是否也在生产或开发中运行,以便它连接到相应的数据库。
【问题讨论】:
-
定义一个 ENV 变量并检查它?您可以在 crontab 文件中设置环境变量,并在 apache 中使用
SetEnv,因此 cli 和 webserver 都检查相同的内容并知道它们在哪里。 -
@Wrikken 您能否详细说明或链接到任何示例?第一次与 CRON 合作。
-
你可以直接在crontab里做。编辑 crontab 并在您的 crons 顶部添加以下行 #Crons running from the cluster SERVER_NAME="VARIABLE TO MATCH THE CONDITION"
-
或者你可以有一个类似 SITE_DATA="DEV" 的环境变量并在 if 条件 $_SERVER["SITE_DATA"] 中使用它
-
我更喜欢使用
getenv(),但对于其余的:正如 Abhik 所说。man 5 crontab可能会告诉你所有你需要知道的。
标签: php codeigniter cron