[英]Controller action as a cron job phalcon
我需要运行cron作业以执行sql查询,并每24小时将数据保存在数据库中。
我有一个名为GetproductsController.php
的控制器,我必须执行的方法是indexAction()
我已经尝试过这种方式:
5,10,15,20,25,30,35,40,45,50,55,59 * * * * / usr / bin / curl --silent http:// localhost:8080 / myproject / getproducts / index
但是我不知道该怎么做,如果有人知道我该怎么做,我将不胜感激。
看待!
看来您想做的事情是不可能的(从cron调用控制器方法)。 就个人而言,我会尝试从其文档中使用Phalcon CLI: https : //docs.phalconphp.com/en/latest/reference/cli.html
卷毛是另一种选择。 为此,首先使用以下命令确定curl在服务器上的位置:
which curl
该命令的结果将是文件系统上的路径,例如/ usr / bin / curl。 在下面的cron命令中使用该结果代替[curl of path]。
你会做:
59 23 * * * [path to curl] --silent https://mypage/getproducts/index &>/dev/null
您需要为您的项目创建一个cli bootstrap。
\\Phalcon\\Mvc\\Application
。 相反,对于cli应用程序,应使用\\Phalcon\\Cli\\Console
。 \\Phalcon\\Di\\FactoryDefault
。 相反,对于cli应用程序,应使用\\Phalcon\\Di\\FactoryDefault\\Cli
。 Phalcon\\Mvc\\Dispatcher
。 相反,您应该将Phalcon\\Cli\\Dispatcher
用于cli应用程序。 Phalcon\\Mvc\\Router
。 相反,您应该对cli应用程序使用Phalcon\\Cli\\Router
。 请注意,我提到的类适用于Phalcon 2.0。 我不确定Phalcon 3是否相同。
您可以使用带有几个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 bootstrap文件(我们将其命名为cli.php)后,您可以为shep添加php #!/usr/bin/env php
并使该文件可执行。 然后,您可以以cli.php {taskname}
身份运行任务
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.