Web服务器和Cron作业 - 使用相同的公共文件?

时间:2012-10-05 16:10:51

标签: php cron

我有一个网站。设置如下:

/public_html
    index.php
    common.php
    db.php
    /dev
      index.php
      common.php
      db.php

common.php包含重复出现的功能。 Db.php包含数据库连接信息。

common.php还包含用于确定当前正在访问的页面位于“开发”或“生产”中的天气的功能。然后它使用此信息相应地调用包含文件。

问题是,我还有一些Cron Jobs设置,它调用位于public_html之外的Php Scripts。但是没有一个包括工作,因为这些函数可以确定路径,使用$_SERVER个变量,并依赖于URL的部分(比如“/ dev”这个词的存在)。

那么,我最好只为我的Cron Jobs(数据库连接和函数)提供一组单独的文件,即使它们可能会复制网站其他部分中的相同文件?

3 个答案:

答案 0 :(得分:0)

您可以确定相对于common.php的路径,使用dirname(__FILE__)获取common.php的完整路径,然后相对于此确定所有其他路径。根据我的经验,这是确定路径的最便携方式,因为它不需要服务器或OS合作。

从PHP 5.3开始,您可以使用__DIR__代替dirname(__FILE__)来获取当前文件所在的目录。

答案 1 :(得分:0)

您可以使用OS环境变量来设置脚本的执行环境。

crontab的:

MYAPP_ENV=production
# min hr dom mon dow command
  0   *  *   *   *   php /var/www/myapp/scripts/cron.php

您的脚本:

$environment = env('MYAPP_ENV');

答案 2 :(得分:0)

我改变了你为初学者确定环境的方式。服务器(环境)variables是一种很好的方法。您可以使用apache甚至在htaccess文件中轻松地在vhost级别设置它们。

相对路径和chdir(dirname(__ FILE__));可以为您的路径问题找到解决方案。

似乎你理解这个问题以及你在这里要求做出让你觉得肮脏的事情的许可:)不要不必要地复制一些东西。重新考虑您的代码。