2012-01-15 109 views
0

我在共享服務器上有cPanel,我需要每天運行一個shell腳本。Cakephp 2.0,CPanel和Shell腳本

該腳本必須調用控制器功能,每天都會對網頁進行切割。

我的問題是,我不知道如何做一個調用這個函數的shell腳本,並將它添加到cpanel中的cron作業中。我怎麼做這一切?

在此先感謝!


我打算延長我的問題。

我有這樣的代碼 「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 

最後一部分是將輸出記錄在文件中。

它根本不起作用。

請幫忙!!!

+0

如果你有ssh訪問,我認爲你可以用crontab -e命令來完成。 – 2012-01-15 01:07:33

回答

0

下面是命令我用我的服務器上的cron作業:

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

其中time是我的外殼,位於/app/Console/Command/TimeShell.php。這就是你如何運行shell。

現在,在問題的另一部分,必須從shell中調用任務。從您發佈的代碼看來,您似乎將一些shell與任務混淆了。外殼可以包含任務,就像控制器可以有組件一樣。在沒有任何參數的情況下調用shell時,需要使用main();。任務不需要執行它。另一方面,任務必須實施execute();方法。

爲了從shell運行任務,請務必在TestShell類中添加public $tasks = array('Test');;您可以使用此任務在你的殼,就像你在控制器中使用組件:$this->Test->whatever();

欲瞭解更多信息介紹CakePHP 2.0炮彈和任務,看看here

希望這有助於!