ステップ24:cronを実行する

5.2版本
保持 没有维护的
5.0

Cronを実行するCronは,メンテナンスタスクに便利です。ワーカーワーカー异なり,短い晚期でスケジュール実さます。

コメントをクリーンアップする
patch_file.
12 34 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
--- a / src /存储库/注释repository.php+++ b / src /存储库/注释repository.php@@ -6,6 +6,7 @@使用app \ entity \评论;使用app \ entity \会议;使用doctrine \ bundle \ doctrinebundle \ repository \ serviceentityRepository;使用Doctrine \ Persistence \ ManagerRegistry;+使用Doctrine \ Orm \ QueryBuilder;使用原则\ ORM工具\ \分页\ Paginator;/ * *@@ -16,6 +17,8 @@使用Doctrine ORM\Tools\Pagination\Paginator;*/ CommentRepository扩展ServiceEntityRepository {+私有常数Days_before_rejected_removal = 7;+公共const paginator_per_page = 2;公共功能__Construct(ManagerRegistry $注册表)@@ -23,6 +26,29 @@ class commentRepository扩展了serviceentityRepository父:__construct(美元注册、评论::类);}+公共功能countoldrejected():int+ {+返回$ this-> getoldrejectedquerybuilder() - >选择('count(c.id)') - > getQuery() - > getSinglesCalArresult();+}++公共功能delestoldrejected():int+ {+返回$ this-> getoldrejectedquerybuilder() - >删除() - > getQuery() - > execute();+}++私有函数getoldrejectedqueryBuilder():QueryBuilder+ {+返回$ this - > createQueryBuilder(“c”)+  - > andwhere('c.state =:state_rejected或c.state =:state_spam')+  - > andwhere('c.createdat <:date')+  - > setParameters([+'state_rejected'=>'拒绝',+ 'state_spam' => 'spam',+'日期'=> new \ datetime( -  self :: days_before_rejected_removal。'天'),+))++}+public function getCommentPaginator(Conference $ Conference, int $offset): Paginator {$query = $this->createQueryBuilder('c')

ちなみに

より複雑なクエリーが必要な際は,生成されたSQLステートメントを確認すると便利です(これらはログや,Webリクエストのプロファイラで見つけることができます)。

Cliコマンドを作用成するsrc / command / commentcleanupcommand.phpファイルを作物成し,应用:评论:清理と命名したCLIコマンドを作成します:

src / command / commentcleanupcommand.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
名称空间app \命令;app \ repository \ commentRepository;欧宝娱乐app下载地址symfony \ component \ console \ command \命令;欧宝娱乐app下载地址Symfony \ Component \ Console \ Input \ InputInterface;欧宝娱乐app下载地址Symfony \ \控制台输入\ \ InputOption组件;欧宝娱乐app下载地址Symfony \ \输出控制台\ \ OutputInterface组件;欧宝娱乐app下载地址symfony \ component \ console \ style \ symfonystyle;班级commentcleanupcommand.延伸命令{私人的$ CommentRepository.;保护静止的$ defaultname.=应用:评论:清理的;公共函数__构造CommentRepository$ CommentRepository.{$这一点->CommentRepository.=$ CommentRepository.;父母::__构造();}保护函数配置(){$这一点->setDescription.'删除数据库的拒绝和垃圾评论'->addOption.'干奔跑'InputOption.::value_none.'干跑';}保护函数执行InputInterface$ Input.OutputInterface.$产出int{$ io.=欧宝娱乐app下载地址SymfonyStyle.$ Input.$产出);如果$ Input.->getOption'干奔跑'))){$ io.->请注意“已启用干燥模式”);$ count.=$这一点->CommentRepository.->countOldRejected();}别的{$ count.=$这一点->CommentRepository.->deleteoldrejected.();}$ io.->成功Sprintf.'删除“%d”旧拒绝/垃圾邮件评论。$ count.));返回0.;}}

欧宝娱乐app下载地址symfonyにビルトインされて全て全てのアプリケーションのはは,欧宝娱乐app下载地址控制台からアクセス可です。使用可能なコマンドの,とても多种なるので,ネームとして,アプリケーションを付け。应用程序そして,コロン()で区切りを付けて,サブネームスペースを付けてください。サブネームスペースは1つでも複数個でも良いです。

コマンドは输入(コマンドから渡ってきた引数やオプション)を取得し,コンソールに書き出すのに输出を使うことができます。

このコマンドを実行してデータベースをクリーンアップてください

1
$ 欧宝娱乐app下载地址symfony控制台应用:评论:清理

欧宝娱乐app欧宝体育应用最新版app下载下载地址symfonycloudでcronをセットアップする欧宝娱乐app欧宝体育应用最新版app下载下载地址symfonycloudのの利ななののは,ほとんどの设定は.欧宝娱乐app下欧宝体育应用最新版app下载载地址symfony.cloud.yaml.に格式さされれていることですことことことことためため,网页,ワーカー,cronジョブががににさいい

crセクションは,全てのcronジョブをしています。各cronは,规范スケジュールに応じて実行されます。

Croncap.ユーティリティは,コマンドの実行をモニターして,コマンドが0.でないでないコードで终わっ终わったとき,环境环境mail.に定义さされててメールアドレスにメールメールを送り送り

mail.环境环境数を设定する

1
$ 欧宝娱乐app下载地址symfony var:setmail.=[电子邮件受保护]

ローカルマシンからcronを强制的に実行

1
$ 欧宝娱乐app下载地址symfony cron comment_cleanup

Cronは,全てのsy欧宝娱乐app欧宝体育应用最新版app下载下载地址mfonycloudのブランチにセットアップれれてますます。本番户外のの环境でででを走らせたくたくないないないはははは走らののはは変のS欧宝娱乐app下载地址YMFONY_BRANCH美元をチェックしてください:

1 2 3
如果[S欧宝娱乐app下载地址YMFONY_BRANCH美元=“主”];然后Croncape 欧宝娱乐app下载地址Symfony应用程序:发票:发送FI.


这项工作,包括代码样本,是在一个Creative Commons BY-NC-SA 4.0执照。