2017-02-09 39 views
0

我需要運行cron作業來執行sql查詢並每24小時將數據保存到數據庫中。作爲cron作業的控制器操作phalcon

我有一個控制器稱爲GetproductsController.php,我必須要執行的方法是indexAction()

我一直試圖做這種方式:

5,10,15,20,25,30 ,35,40,45,50,55,59 * * * *的/ usr/bin中/捲曲--silent http://localhost:8080/myproject/getproducts/index

但我不知道該怎麼做,如果有人知道我該怎麼辦它,我將不勝感激。

注意!

+2

'cd'是改變目錄,它應該至少以'php'開頭 – nogad

+0

你能舉個例子嗎? @nogad –

+0

http://stackoverflow.com/questions/2689284/executing-php-with-crontab 我的PHP路徑一直是/ usr/bin/php。這個問題的接受答案告訴你如何找到你的。我不確定如何調用功能思想。 – tjfo

回答

0

您需要爲項目創建一個CLI引導。

  • Web應用程序的默認應用程序類別爲\Phalcon\Mvc\Application。相反,您應該使用\Phalcon\Cli\Console用於cli應用程序。
  • Web應用程序的默認DI類是\Phalcon\Di\FactoryDefault。相反,您應該爲cli應用程序使用\Phalcon\Di\FactoryDefault\Cli
  • Web應用程序的默認分派器類是Phalcon\Mvc\Dispatcher。相反,你應該使用Phalcon\Cli\Dispatcher cli應用程序。
  • Web應用程序的默認路由器類別爲Phalcon\Mvc\Router。相反,您應該爲cli應用程序使用Phalcon\Cli\Router

請注意,我提到的類是Phalcon 2.0。我不知道,如果他們是爾康3.

這裏同樣是documentation for cli applications in phalcon.

您可以使用if語句有一些相同的配置文件。例如:

if (php_sapi_name() == "cli") { 
    $di = new Phalcon\Di\FactoryDefault\Cli(); 
} else { 
    $di = new Phalcon\Di\FactoryDefault(); 
} 

if (php_sapi_name() === "cli") { 
    $di->set('dispatcher', function() { 
     $dispatcher = new Phalcon\CLI\Dispatcher(); 
     $dispatcher->setDefaultNamespace('Project\\Tasks'); 
     return $dispatcher; 
    }); 
} else { 
    $di->set('dispatcher', function() { 
     $dispatcher = new Phalcon\Mvc\Dispatcher(); 
     $dispatcher->setDefaultNamespace('Project\\Controllers'); 
     return $dispatcher; 
    }); 
} 

您可能能夠使用控制器類使用CLI路由。但我會推薦使用獨立的任務。

在創建cli引導文件(我們稱之爲cli.php)後,您可以爲php #!/usr/bin/env php添加shebang並使該文件成爲可執行文件。然後你可以運行你的任務cli.php {taskname}

+0

它的作品謝謝你! :) –

0

它似乎並不像你想要做什麼是可能的(調用來自cron的控制器方法)。就個人而言,我會嘗試從他們的文檔使用爾康CLI:https://docs.phalconphp.com/en/latest/reference/cli.html

捲曲是另一種選擇。爲此,首先確定捲曲位於服務器上:

which curl 

此命令的結果將是在文件系統如/ usr/bin中/捲曲的路徑。在下面的cron命令中使用該結果代替[curl路徑]。

你會怎麼做:

59 23 * * * [path to curl] --silent https://mypage/getproducts/index &>/dev/null 
+0

感謝您的回答我將證明它! –

+0

我試過你的答案,但它並沒有工作!,我更新我的問題! –