【问题标题】:Cakephp 2.0, CPanel and Shell scriptsCakephp 2.0、CPanel 和 Shell 脚本
【发布时间】:2012-02-10 14:43:26
【问题描述】:

我在共享服务器上有 cPanel,我需要每天运行一个 shell 脚本。

这个脚本必须调用一个控制器函数来每天抓取一个网页。

我的问题是我不知道如何编写一个调用此函数并将其添加到 cpanel 中的 cron 作业的 shell 脚本。我该怎么做?

提前致谢!


我将扩展我的问题。

我有这个代码“TestTask.php”:

class TestTask extends Shell {

    function main() {
         $this->out('Hello world.');
    }

    function execute() {
         $this->out('Hello world 2.');
    }
}

它位于:/home/myuser/public_html/app/Console/Command/Task

然后,我的 cronjob 是这样的:

* * * * * php /home/myuser/public_html/app/Console/cake.php test -app /home/myuser/public_html/app >> /home/myuser/public_html/file.log

最后一部分是将输出记录到文件中。

它根本不起作用。

请帮忙!!!

【问题讨论】:

  • 如果你有 ssh 访问权限,我想你可以使用 crontab -e 命令来完成。

标签: php cakephp cron cpanel cakephp-2.0


【解决方案1】:

这是我在服务器上使用的 cron 作业的命令:

/home/path-to-cake/lib/Cake/Console/cake -app /home/path-to-cake/app time

其中time 是我的shell,位于/app/Console/Command/TimeShell.php。这就是你运行 shell 的方式。

现在,关于您问题的另一部分,必须从 shell 中调用任务。从您发布的代码来看,您似乎将 shell 与任务混淆了。 shell 可以包含任务,就像控制器可以包含组件一样。 main(); 在不带任何参数的情况下调用 shell 时是必需的。任务不需要执行它。另一方面,任务必须实现execute(); 方法。

为了从你的shell运行一个任务,一定要在TestShell类中添加public $tasks = array('Test');;您可以在 shell 中使用此任务,就像在控制器中使用组件一样:$this->Test->whatever();

有关 CakePHP 2.0 shell 和任务的更多信息,请查看here

希望这有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多