CakePHP控制台通过Cron问题

时间:2009-07-03 10:43:33

标签: windows cakephp cron

我正在使用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。

2 个答案:

答案 0 :(得分: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. 在“系统变量”部分
  5. 中选择PATH变量
  6. 按“编辑”
  7. ;E:\web\elink\cake\console\附加到“变量值”
  8. 在所有对话框中按'确定'
  9. 关闭所有打开的cmd提示
  10. 然后,您可以设置pycron以运行E:\web\elink\cake而不使用-app参数,并且所有特定于应用程序的shell都应该可用。

答案 1 :(得分:1)

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

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

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

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

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