2017-04-18 5 views
3

私は自分のサーバーからプッシュ通知を送信していて、それをバックグラウンドプロセスで単純に実行したいと考えています。私はLaravelのドキュメントを読んできました。データベースドライバやその他のオプションについても知っています。私はローカルマシンのデータベースドライバを使って作業していますが、一つのことは、バックグラウンドスレッドを起動して、ジョブを待ち受けるためにphp artisan queue:listen --deamonを使ってキューに追加されていることです。laravel queues - 同期ドライバの仕組みそれは、分離されたプロセスまたはメインの実行スレッドで実行されますか?

重要なのは、私のリソースとメモリの一部を「クリーン」タスクのように実行することによって常に消費されていることです。私は、プッシュ通知をトリガするときに新しいプロセスを作成したいだけで、追加されるとすぐに実行を開始し、そのプロセスを終了する必要があります。一方、laravelジョブでは、私は避けたいバックグラウンドプロセスを実行する必要があります。また、自分のジョブの実行を監視するためにサーバー上に "スーパーバイザー"をインストールできない共有ホスティングを使用しています。

誰でもこのあいまいさを解消できますか?このシナリオを処理するためのより良い方法は何でしょうか?

+3

同期ドライバは、バックグラウンドワーカーではなくメイン実行スレッドでプロセスを実行します。デバッグに便利なのは –

+0

@SanderVisser何が良い方法ですか? –

+0

データベースドライバを使用できますが、バックグラウンドプロセスを実行する必要があります。または、同期ドライバを使用することもできますが、それはメインスレッド上で実行されます。 PHPの世界では、メインスレッドからバックグラウンドプロセスを生成するのが難しく、多くの問題があります。しかし、本当にしたい場合は、バックグラウンドタスクを生成する独自のドライバを作成することができます。 –

答えて

1

若干の調査の末、私はdatabaseドライバを使うことにしました。他にも素晴らしいオプションがいくつかありますが、システムの作業負荷によって選択肢が異なります。

要点は、syncドライバは開発中のときにだけ便利なタスクの実行にメインスレッドを使用します。実動システムがあれば、キューを実行するための他のオプションを検討する必要があります。長期実行タスクをキューイングする主な考え方は、いくつかのバックグラウンドプロセスで実行できるようにして、メインアプリケーションスレッドがブロックされず、クライアント要求をより迅速に処理できるようにすることです。

関連する問題