我正在使用PHP构建Web应用程序,用于将来安排任务。在后台我应该每2分钟轮询数据库,看看是否有任何即将到来的任务。我如何实施轮询。 Javascript解决方案没有帮助,因为用户可以在webapp上的任何页面上,但系统应该保持汇集数据库。
Cron是单向的,但我仍然需要轮询数据库来创建一个cron作业。实施它的最佳方法是什么?
由于
答案 0 :(得分:0)
创建一个每X分钟执行一次的cron作业,并使该作业检查数据库。如果有即将到来的新任务,只需将作业启动即可。
答案 1 :(得分:0)
创建'execute:tasks'artisan命令,这样您就可以在需要执行任务时轮询数据库。您应该能够以这种方式运行它:
php artisan execute:tasks
您的命令将调用某些控制器操作(或类方法)来轮询数据库并查找是否有可执行的任务。
然后你只需要创建一个每2分钟执行一次artisan命令的cron作业:
*/2 * * * * php artisan execute:tasks
这是Artisan命令的一个例子:
<?php
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class ExecuteTasksCommand extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'execute:tasks';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Find and execute available tasks.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return void
*/
public function fire()
{
(new ExecuteTasksClass)->findAndExecute();
}
}
您只需将此文件命名为app / commands / ExecuteTasksCommand.php
并将其添加到app\start\artisan.php
:
Artisan::add(new ExecuteTasksCommand);