プロジェクトでコンソール コマンドを作成します。毎日午後 7 時に実行したいのですが、symfony2 でどのように実行できますか? 基本的なphp cronジョブの方法またはsymfony2にはもっと便利なものがありますか? ありがとう
4 に答える
基本的なcronを使用できます。debianまたはubuntuでは、これを行うことができます。
crontab -e -u <username>
usernameは、コマンドを実行する必要があるユーザーの名前です。エディターでコマンドを追加します。これは、行がどのように見えるべきかについての良い説明です。Symfony2 コマンドの場合、次のようなものが機能するはずです。
* * * * * /usr/bin/php /var/www/symfony2/app/console your:command --option=123
これはyour:command --option=123
毎分実行されます。
Windowsマシンでは、コマンドを使用できますac
。Windows 7ではデフォルトで使用できます。こちらのドキュメントをお読みください。次のようになります。
AT 00:00 /every:M,T,W,Th,F "php /var/www/symfony2/app/console your:command --option=123"
php
がグローバルに使用可能php.exe
であること、またはファイルへのパスが正しいことを確認してください。
You can just set a cron in crontab to execute your symfony command,
e.g.
0 19 * * * /var/www/symfony/app/console YOUR_COMMAND
コマンドの実行に使用するユーザーに注意してください。ルートとして実行すると、ルートは Symfony キャッシュを所有し、サイトの HTTP 側を壊す可能性があります (たとえば、nginx は www-data ユーザーとして実行されるため)。
Docker では、Phusion ベース イメージの「setuser」メソッドを使用して、www-data ユーザーを強制しています。
これは良い質問だと思います。
私は最近、タスクを実行するための cron ジョブにあらゆる種類の隠れた依存関係が存在する作業 (完全な MVC ではなく、ZF1 コンポーネントを使用) を行いました。コメントを追加し、ドキュメントを作成して、私の後に来る人にこれらの cron が存在することを警告するために、多くの時間を費やす必要がありました。 、何をしたか、どこに保管されたかなど。
その目的のためだけにZFコンポーネントがあるとは思いもしませんでしたが、コントローラーには多くの依存関係があります...
申し訳ありませんが、私はあなたの直接の質問には答えていません。
FWIW