2016-03-25 20 views
2

既存のLaravelプロジェクトでは、すべてのタスクが順番に実行されます。 PHPスレッドを使用して並列に実行できるコードの一部を特定し、応答時間を短縮できます。Laravel DBを使用したPHPのpthreads ORMクエリとの接続

だから私はpthreads、を使用しようとしています。 appserver.ioにはすでにpthreadが付属しているので、apacheではなくappserver.ioでプロジェクトを実行しています。

pthreadを正常に使用することができました。

self::$connection = new PDO ('mysql:host=127.0.0.1;dbname=mydb' , 'myuser' , 'mypass'); 

をしかし、私はLaravelの\DB:connection同じ方法を使用することはできませんよ:各スレッドとデータベースの相互作用のためのrun()法の下に新しいPDO接続を作成するように、このようにネイティブクエリを使用して正常に動作しています。 ORMベースのクエリで書かれたコードを実行するには、これを動作させる必要があります。 run()の方法で毎回新しい接続を作成するにはどうすればよいですか?

+0

こんにちは、私も同じ問題を抱えています、あなたは解決策に行きましたか? –

答えて

1

ジョブをディスパッチせず、それらのジョブをバックグラウンドで実行する(キューに入れる)ことはできますか?

+0

これはコメントの意味ですか? – Gokigooooks

+0

お返事ありがとうございます。私は仕事のトップキューを追加することをお勧めします。しかし、私はキューがそれらを連続的に処理すると思います。正しい?これは、すべてのジョブが連続して実行される直前(マルチスレッド前)です。私はマルチスレッドを使うことを望んでいます。各スレッドはその機能(すべてのMySQLクエリを持っています)を実行し、実行します(より多くのCPU使用量があっても、私は良いハードウェアを持っています。 –

1

2つのことを考慮する必要があります。 1.スレッドにベンダーファイルを読み込む必要があります。 2.ファサードの代わりに、スレッド内のシングルトンクラスを使用します。

これで問題が解決します。

+0

@kailash Gajara私は電子メールをプッシュするためにpthreadsを使ってLaravel Artisanコマンドを試しています。ここにリンク[Pthreads + Laravel](https://github.com/ssatz/PThreadsLaravel)があります。それは役に立つかもしれません。 – satz

関連する問題