2016-03-25 4 views
2

Mein vorhandenes Laravel-Projekt ist so, dass alle Aufgaben nacheinander ausgeführt werden. Ich habe einen Teil des Codes identifiziert, der mit PHP-Threads parallel ausgeführt werden kann und die Antwortzeit reduzieren kann.PHP Pthreads mit Laravel DB Verbindung mit ORM-Abfragen

Also versuche ich Pthreads, https://github.com/krakjoe/pthreads/tree/PHP5 zu verwenden. Der appserver.io wird bereits mit pthread geliefert, daher verwende ich das Projekt auf appserver.io und nicht auf Apache.

Ich konnte Pthread erfolgreich verwenden. Wie in neue PDO-Verbindung unter run() Methode für jeden Thread und Datenbank-Interaktion zu schaffen arbeitet gut mit nativen Abfrage wie folgt:

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

Aber ich bin nicht in der Lage Laravel des \DB:connection die gleiche Art und Weise zu nutzen. Ich muss diese Funktion haben, um meinen Code auszuführen, der mit ORM-basierten Abfragen geschrieben wird. Wie kann ich jedes Mal neue Verbindung unter run() Methode erstellen?

+0

Hallo, ich habe auch das gleiche Problem, hast du die Lösung gehen? –

Antwort

1

Können Sie keine Jobs versenden und diese Jobs nur im Hintergrund ausführen lassen (in die Warteschlange stellen)?

+0

ist dies als Kommentar gemeint? – Gokigooooks

+0

Danke Ashit für die Antwort. Ich denke, Jobs Top-Warteschlange hinzufügen ist eine gute Idee. Aber ich denke, die Warteschlange wird sie seriell verarbeiten. Richtig? Genau das passiert gerade (vor dem Multithreading), wo jeder Job seriell ausgeführt wird. Ich hoffe, mit Multithreading, jeder Thread kann diese Funktion (die alle mysql-Abfragen hat), führen Sie es aus (auch wenn mehr CPU-Nutzung, mir geht es gut, wie ich gute Hardware habe), erhalten Ergebnisse schneller. –

1

Zwei Dinge, die Sie beachten müssen. 1. Sie sollten die Herstellerdatei in Ihre Threads laden. 2. Statt der Fassade Singleton-Klasse in Threads verwenden.

Hoffe, dies wird das Problem lösen.

+0

@kailash Gajara Ich habe Laravel Artisan mit pthreads experimentiert, um E-Mails zu pushen. Hier ist der Link [Pthreads + Laravel] (https://github.com/satz/PThreadsLaravel). Es könnte nützlich sein. – satz