2013-10-06 52 views
2

創建Cron作業我試圖在我的CakePHP的2.x的應用程序創建一個cron作業。但是,所有我已經在網上閱讀資源的似乎不是這樣做完全不同的彼此很少一致或非常複雜的術語解釋。在CakePHP的2.x的

基本上我創建了以下文件MyShell.php/app/Console/Command

<?php 

class MyShell extends Shell { 

    public function sendEmail() { 

     App::uses('CakeEmail', 'Network/Email'); 

     $email = new CakeEmail(); 

     $email->from('[email protected]'); 

     $email->to('[email protected]'); 

     $email->subject('Test Email from Cron'); 

     $result = $email->send('Hello from Cron'); 

    } 

} 

?> 

而且我希望每天晚上說運行在午夜這段代碼。

接下來我該做什麼?接下來的部分讓我很困惑!我在讀了書:http://book.cakephp.org/2.0/en/console-and-shells/cron-jobs.html,我應該運行一些代碼的終端,使其在一定的時間等。做到這一點,我可以用我的託管服務提供商,而容易似乎設置這些。

但我對控制檯目錄感到困惑。應該去什麼什麼文件夾中的位置:https://github.com/cakephp/cakephp/tree/master/app/Console

/Console/Command 
/Console/Command/Tasks 
/Console/Templates 

也注意到,很多文件都是.PHP(如我的shell文件也.PHP),但根據文檔我讀過的Cron作業,執行的文件應該是.sh?

任何人都可以對此有更多的瞭解嗎?

那麼代碼將調用該命令?

例如會想這是不正確的:0 0 * * * cd /domains/driz.co.uk/html/App && cake/Console MyShell sendEmail

感謝

回答

2

號有沒有辦法做到這一點只在PHP。但是,這並不重要,因爲crons很容易成立。

在你關聯的那篇文章中,你仍然需要設置一個cron--不同之處在於你創建了一個運行所有其他cron的cron,而不是爲每個作業設置一個cron。所以無論如何,你必須學會​​創建一個cron。

說明取決於您的服務器的操作系統以及您使用的主機。有些主機將有一個方式,通過類似的cPanel什麼的GUI界面來設置cron作業,無需你觸摸終端。

它通常很容易在網上找到指令如何設置cron作業與主機或服務器操作系統,但如果你遇到了麻煩,更新與您的主機的名稱,你的服務器的操作系統和版本的問題。

此外---------------------------------

經常在cron作業你」將運行一個shell腳本(.sh)。但不要擔心這種情況。你的將以.php結尾。

回覆:目錄結構:

/Console/Command是你的新文件應該去。

如果你正在做很多shell的東西,你可能想要將公共代碼抽象到/Console/Command/Task文件夾中。瞭解更多關於該here。這可能不會在你的情況下需要。

/Console/Command/Templates是你可以把蛋糕烘焙控制檯的自定義模板 - 現在不用擔心。

如果我只有幾個cron作業要運行,那麼我只創建一個名爲CronJobsShell.php的文件,並將它們全部放在那裏。

真的,你應該從頭到尾閱讀Cake的documentation on shells。它會給你一個關於它如何掛在一起的好圖片。

+0

然後像WordPress這樣的軟件怎麼做呢?當它運行它們自動更新自己,我不會觸摸終端。 – Cameron

+0

Wordpress不會自動更新。它詢問您是否要更新,並在登錄到管理界面時這樣做。所以,沒有cron運行。當有人查看管理頁面時,Wordpress可以根據最新版本檢查當前版本,如果不是最新版本,則會顯示一條消息詢問您是否要升級。 –

+0

在v3.7中,它會自動更新並每天晚上發送一封電子郵件和進程日誌。 http://wordpress.org/news/2013/09/wordpress-3-7-beta-1/ – Cameron

0

這可以通過以下步驟很容易做到 - :

1)創建一個外殼讓我們說HelloShell.php在控制檯/命令

<?php 
    class HelloShell extends AppShell 
    { 
    public function main() 
    { 
    //Your functionality here... 
    } 

    } 

    ?> 

這個殼是由控制檯/蛋糕被稱爲你好

2)寫命令crontab-e。這將打開你選擇現在,因爲我們希望我們的外殼應在午夜寫後運行的默認編輯器或編輯: -

0 0 * * * /PATH TO APP/Console/cake hello 

爲了更好地理解是指https://www.youtube.com/watch?v=ljgvo2jM234

謝謝!