ホームページ >バックエンド開発 >PHPチュートリアル >PHPのLaravelフレームワークで非同期処理を実行するスーパーバイザを実装する方法

PHPのLaravelフレームワークで非同期処理を実行するスーパーバイザを実装する方法

不言
不言オリジナル
2018-06-13 13:51:521500ブラウズ

この記事では、PHP フレームワーク Laravel で非同期プロセスを実行するためのスーパーバイザーを実装する方法を主に紹介します。この記事の紹介は、必要な方にとって一定の参考と学習価値があると思います。以下をご覧ください。

問題の説明

Laravel フレームワークを使用して動的 Web ページを実装する場合、一部の操作で大量の計算が必要になると、ユーザー エクスペリエンスに影響を与えないように、多くの場合、非同期処理を使用する必要があります。これは、supervisor と laravel に付属するキューを使用して実装されます。詳細な紹介を見てみましょう:

Supervisor

Supervisor は、Python で書かれたプロセス管理ツールで、簡単に使用できます。 、プロセス (Python プロセスだけでなく) を再起動、シャットダウンします。単一のプロセスを制御するだけでなく、複数のプロセスを同時に開始およびシャットダウンすることもできます。たとえば、残念ながら、サーバーの問題によりすべてのアプリケーションが強制終了される場合、スーパーバイザを使用してすべてのアプリケーションを開始できます。コマンドを 1 つずつ入力するのではなく、同時に起動します。

方法は次のとおりです。

1. スーパーバイザをインストールします。

 apt-get install supervisor

再起動します。インストール後 スーパーバイザー:

service supervisor restart

2. スーパーバイザー ファイルの設定

[program:laravel]
process_name=%(program_name)s_%(process_num)02d
command=php {{ app.root }}/artisan queue:listen
autostart=true
autorestart=true
user=www-data
numprocs=1
redirect_stderr=true
stdout_logfile={{ app.root }}/storage/logs/queque.log

ここでは、laravel キューの監視を開始するようにスーパーバイザーによって管理されるプロセス命令が設定されます。プロセス数とエラーログアドレスも指定します。

3. キューの設定

キューのコードを記述する前に、その設定場所を config/queue.PHP に設定する必要があります。データベース、Redis、同期などのキュードライバーを構成する必要があります。さまざまなオプションには対応する構成があります。ここでは構成に Redis を選択します。

例:

'redis' => [
  'driver' => 'redis',
  'connection' => env('QUEUE_CONNECTION', 'default'),
  'queue' => 'wordtohtml',
  'expire' => 600,
 ],

4. 非同期プログラムを作成する

非同期プログラムを app/job ディレクトリに作成し、独自のクラスの新しいクラス。例: シャットダウンし、クラスのコンストラクターとハンドル関数を作成します。ハンドル関数はプログラムの計算処理です。

5. 非同期関数の実行

$this->dispatch(new Shutdown($vimd));

この命令を使用して、非同期プログラムを作成します。

上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連する推奨事項:

PHP の Laravel フレームワークにおけるイベント操作の分析

laravel 5.1 での php 職人について mit の使用

以上がPHPのLaravelフレームワークで非同期処理を実行するスーパーバイザを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。