2016-11-21 1 views
2

Ich habe den folgenden Code auf einem ControllerAufruf mehrere Funktionen parallel in PHP

class SomController extends Controller 
{ 
public function index(){ 
    $var1   = $this->function1(); 
    $var2   = $this->function2(); 
    $var3   = $this->function3(); 
    $var4   = $this->function4(); 
    return view('someview', array(self::SOME1 => $var1,self::SOME2 => $var2,self::SOME3 => $var3,self::SOME4 => $var4)); 
    } 
} 

Also ich diese vier Funktionen parallel anrufen möchten, und an alle dann warten, um zu beenden, die Laravel Ansicht zu machen Ich habe versucht, pthreads zu verwenden, pcntl_fork, ich habe sogar hhvm mit hack verwendet, ohne gutes Ergebnis und parallele Ergebnisse gibt es keinen einfacheren Weg, dies zu erreichen?

+0

Sie haben das einfachste versucht; aber warum müssen Sie parallel ausführen? –

+0

gut, um besser zu funktionieren, denke ich –

+0

http://php.net/manual/en/intro.pthreads.php – Jaime

Antwort

1

Sie können das nicht rein in PHP tun, es ist nur die Natur der synchronisierten Programmiersprache wie PHP, Ruby und Python, Code nacheinander vom Anfang des Codes bis zum Ende auszuführen. Wenn Sie das tun möchten, verwenden Sie eine asynchrone Sprache wie Node.js oder versuchen Sie, asynchrone PHP-Bibliothek zu durchsuchen (was nicht empfohlen wird, da es keine ausgereifte Lösung dafür gibt).

Aber hier: viele große Unternehmen verwenden synchrone Sprache für ihre Website wie Google, Youtube, Bootcamp, etc. Die meiste Zeit, was Sie wirklich brauchen, ist schlau über die Ausführung Ihres Programms zuerst, dann wenn Sie wirklich brauchen asynchronize Anfrage, tun Sie es mit AJAX auf Benutzer-Ende, aber es wird Ihren Code viel komplexer machen dann, was Sie wirklich brauchen.