【问题标题】:CakePHP Console via Cron QuestionCakePHP 控制台通过 Cron 问题
【发布时间】:2009-07-30 11:17:55
【问题描述】:

我正在使用 CakePHP 控制台从我们那里下载文件并在数据库中进行处理。我正在从“app”目录中运行控制台。但是,当我尝试在应用程序外部运行控制台并为我的 cron 作业设置“-app”参数时,它不起作用。

说实话,我使用 -app 参数没有成功。就好像它根本不工作一样。

顺便说一句,我正在使用 Windows 和 Pycron 来完成我的 cron 工作。

当我尝试从 D:\

运行控制台时,会发生以下情况
D:\>web\elink\cake\console\cake -app D:\web\elink\app


Welcome to CakePHP v1.2.2.8120 Console
---------------------------------------------------------------
Current Paths:
 -app: app
 -working: D: -app D:/web/elink/app
 -root: D: -app D:/web/elink
 -core: D:\web\elink

Changing Paths:
your working path should be the same as your application path
to change your path use the '-app' param.
Example: -app relative/path/to/myapp or -app /absolute/path/to/myapp

Available Shells:

 D:\web\elink\vendors\shells:
         - none

 CORE\console\libs:
         acl
         api
         bake
         console
         i18n
         schema
         testsuite

To run a command, type 'cake shell_name [args]'
To get help on a specific command, type 'cake shell_name help'

我的 shell 位于 D:\web\elink\app\vendors\shells。

【问题讨论】:

  • 我似乎也无法让 -app 参数在 Ubuntu 上工作。我会尝试赫克托下面列出的解决方法。

标签: windows cakephp cron


【解决方案1】:

我已设法在 Windows 上使用版本 1.2.2.81201.2.3.8166 重现此问题。 -app 参数似乎根本没有按预期工作。

控制台将仅列出 /vendors/shells 文件夹中的全局 shell,而不列出位于 /app/vendors/shells 或插件 (/app/plugins/plugin_name/vendors/shells) 中的特定于应用程序的 shell。

-app 参数在 OpenSUSE 上按预期工作,列出所有可用的特定于应用程序的 shell(包括插件中的 shell)。

除非我们做错了什么,否则可能值得在Trac 上就这个问题开一张票。

一种解决方法是将您的 Cake console 目录添加到 Windows PATH 环境变量中。

  1. 打开“系统属性”(Start 键 + Pause/Break 键)
  2. 打开“高级”标签
  3. 点击“环境变量”
  4. 在“系统变量”部分中选择 PATH 变量
  5. 按“编辑”
  6. ;E:\web\elink\cake\console\ 附加到“变量值”
  7. 在所有对话框中按“确定”
  8. 关闭所有打开的cmd提示

然后您可以将pycron 设置为在没有-app 参数的情况下运行E:\web\elink\cake,并且所有特定于应用程序的shell 都应该可用。

【讨论】:

  • 我已经这样做了,但是当我输入 cake 时,特定于应用程序的 shell 仍然没有出现。但是,这一次 -app 参数按预期工作。谢谢deizel。
【解决方案2】:

-对于在linux系统上遇到同样问题的人,这里有一个简单的解决方案:

http://book.cakephp.org/complete/3/The-Manual#Running-Shells-as-cronjobs-846

- 任何系统的另一种替代解决方案是创建一个包含两行的简单脚本,如下所示:

cd /path/to/app
/path/to/cake

-这两种解决方案都适用于 Cent0S 和基于 MacOS 的机器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多