我必须为我创建的控制台命令设置一个作业管理器。 控制台命令需要20到30分钟才能完成。 这个控制台命令正在向数据库写入多个查询,并假设它不能缩小到更短的时间。
我已经在Symfony2.8中创建了所有内容,但我是一个真正使用它的新手。 所以我enter link description here
我只需要像后台任务一样运行此命令。没有触及应用程序的前端。任何人都可以帮我吗?
好吧,好吧。这需要定期完成,但需要在用户/客户请求上完成。答案 0 :(得分:2)
这在很大程度上取决于它需要做什么。
只运行一次吗?登录到服务器,使用tmux或screen来保持运行,即使断开连接,然后运行命令(bin/console name-of-command
)。
定期运行 - 为需要运行它的用户在crontab中输入一个条目。
不知道脚本需要做什么,以及执行的频率(如果有的话),很难说下一步可能是什么。
答案 1 :(得分:1)
你可以通过以下方式在后台运行php:
$builder = new ProcessBuilder();
$builder->setPrefix('/usr/bin/php'); // put your php executable here
$cmd = $builder->setArguments(['/full/path/to/php/file/you/want/to/run.php', 'argumentOne', 'argumentTwo'])
->getProcess()
->getCommandLine();
$process = new Process($cmd . ' > /dev/null 2>&1 &'); // async trick here
$process->run();