質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

989閲覧

【Laravel】バックグラウンドでソースからコマンドを実行したい

tomoyuki123

総合スコア273

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/06/16 14:47

以下を参考にバックグラウンドでコマンドを実行したいですがうまくいきません。
どなたか教えて頂いてもいいでしょうか?

Console/Commands/createZip.php

コマンドはここにzipを作成するコマンドを登録しました。

PHP

1/** 2 * The name and signature of the console command. 3 * 4 * @var string 5 */ 6protected $signature = 'create:zip {ids} {--queue=}'; 7 8/** 9 * Execute the console command. 10 * 11 * @return mixed 12 */ 13public function handle() 14{ 15 // idの配列からzipを作成 16 $this->createZip($this->argument('ids')); 17}

コマンドはソースから以下のように呼び出して実行されるのは確認できました。

PHP

1 2Artisan::queue('create:zip ', [ 3 'ids' => $ids, 4 '--queue' => 'default' 5]); 6

config/queue.php

ここの設定はデフォルトのままです。

'connections' => [ 'sync' => [ 'driver' => 'sync', ], 'database' => [ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', 'retry_after' => 90, ],

MySQLを使いたかったので以下jobsテーブルとfailed_jobsテーブルを作成しました。

$ php artisan queue:table $ php artisan queue:failed-table $ php artisan migrate

キューワーカを以下のコマンドを叩けばいけると思いましたが、createZipが終わらないと次のコードが実行されないようです。

$ php artisan queue:work

Artisanファサードのqueueメソッドを使用すると、キューワーカーによりバックグラウンドでArtisanコマンドが実行されるようにキューされます。このメソッドを使用する前に、キューの設定を確実に済ませ、キューリスナを実行してください。

https://readouble.com/laravel/5.4/ja/artisan.html

このように書いてあったので、キューの設定をしてキューリスナを実行したいのですが、他に何をやればいいのでしょうか?
根本的に違っていたら教えてください。

環境は以下です。

Laravel5.4 PHP7.1 Mysql5.7

長文失礼しました。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Artisanコマンドをバックグラウンドで実行する
によると、一筋縄ではいかないみたいですね。
「コマンドラインから実行する」やり方だと、結局同一プロセスで
動かすので、非同期にはならないようです。
上記サイトにタスクスケジュール機能(cronへの登録が必要)を使って、
実装する例がありますので、ご参考まで。

投稿2017/06/17 03:35

hotta

総合スコア1613

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomoyuki123

2017/06/18 13:29

とりあえずexecで対応しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問