2014-02-15 78 views
0

我需要在我的一箇舊網站(CakePHP 1.3)中使用cron作業。 我做了如下步驟:CakePHP中的Cronjob 1.3

  1. 創建殼/somepath/public_html/app/vendors/shells/valute.php

    class ValuteShell extends Shell { 
        var $uses = array('Valute'); 
        function main() { 
         $this->Valute->cacheGetKonverterData(); 
        } 
    } 
    
  2. 創建bash腳本,這保存到我的供應商的文件夾中cakeshell(/somepath/public_html/app/vendors/cakeshell)

    #!/bin/bash 
    TERM=dumb 
    export TERM 
    cmd="cake" 
    while [ $# -ne 0 ]; do 
        if [ "$1" = "-cli" ] || [ "$1" = "-console" ]; then 
         PATH=$PATH:$2 
         shift 
        else 
         cmd="${cmd} $1" 
        fi 
        shift 
    done 
    $cmd 
    
  3. 改變了這個文件的權限爲777

  4. 被稱爲CronJob這樣的:

    0 0 * * * /somepath/public_html/app/vendors/cakeshell valute -cli /usr/bin -console /somepath/public_html/cake/console -app /somepath/public_html/app 
    

不幸的cronjob不起作用。爲什麼? 當我打電話給:http://www.somedomain.net/valutes/save_valute 一切工作正常。

<?php 
class ValutesController extends AppController { 
    var $name = 'Valutes'; 
    var $uses = array('Valute'); 

    function save_valutes() 
    { 
     $this->layout = null; // turn off the layout  
     $this->Valute->cacheGetKonverterData(); 
    } 
} 
?> 
+0

可能重複://計算器.com/a/23636079/761202)(雖然這個問題使用自定義bash腳本 - 正確的解決方案是隻調用控制檯/蛋糕)。 – AD7six

回答

0

cakeshellcmd應具有蛋糕芯的cake文件的路徑

cmd="/somepath/public_html/lib/Cake/Console/cake" 

crontab

0 0 * * * /somepath/public_html/app/vendors/cakeshell valute -app /somepath/public_html/app >> var/log/crontab 
[克朗分派器的CakePHP 2.0](HTTP的
+0

感謝您的回覆,但不幸的是,這不起作用 – user2580714

+0

您是否收到任何錯誤消息? – cornelb

+0

我沒有注意到這個錯誤。我用另一種方式解決了這個問題:curl -sfo/dev/null www.somedomain.com/controller/action/secret_code。這是一種即興表演,但它很有效。 – user2580714