PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (PHP) - Parallelisierung in PHP



zerox
11.11.2015, 15:49
Hi,

ich wollte mal fragen ob der ein oder andere schon mal was mit Parallelisierung in PHP zu tun hatte. Damit meine ich Prozesse parallel abzuarbeiten, auszuwerten etc.

Wenn ja was sind eure Erfahrungen und könnt Ihr irgend eine Library oder Klasse empfehlen?

Grüße

darkness
11.11.2015, 18:11
Du meinst zum Beispiel mit nem Stack arbeiten bzw. ner Message Queue?

y0l0sw4gg3r
11.11.2015, 18:27
Kann man in PHP Multithreading/Multiprocessing mit dem nutzen eines Stacks oder einer Queue gleichsetzen?

fsxto
11.11.2015, 19:14
PHP hat weder Multithreading noch Multiprocess. D.h. Single Process, Single Thread.

Wenn du mehrere Kerne deiner CPU gleichzeitig nutzen willst, kannst du das Script nur mehrfach starten.

Solltest du mehrere Verbindungen gleichzeitig aufbauen wollen, kannste das mit multi-curl machen.

~fsxto

Unlimiter
11.11.2015, 19:25
Ich weiß gerade nicht, ob die Frage rhetorisch oder ernst gemeint ist. Wenn nicht ernst gemeint: Multithreading bei PHP (nur mit pecl-Extension möglich) funktioniert gleich wie man es auch unter C usw. kennt.

Hier noch einige wichtige Links (was wird benötigt, was enthält die Extension/was kann man mit ihr machen):


https://github.com/krakjoe/pthreads
https://pecl.php.net/package/pthreads


Wenn man Erfahrungen erwähnen soll (C Basis), würde ich sagen, dass das wichtigste an der Sache ist zu wissen, wann ein Prozess den kritischen Bereich betritt und wie lang man eine Sperre verhängen muss. Ansonsten wäre noch das Thema der Synchronisierung wichtig.

fsxto
12.11.2015, 11:40
Die von dir vorgeschlagene library läuft jedoch nur unter PHP7, ist demnach ein alpha/beta build von php. Davon würde ich stark abraten, wenn dies nicht nur eine Spielerei werden soll.

Unlimiter
12.11.2015, 12:50
Und aus diesem Grund steht hier auch folgender Satz, der nicht als Dekoration angeführt wurde:


Hier noch einige wichtige Links (was wird benötigt, was enthält die Extension/was kann man mit ihr machen)

Sieht man sich alles ganz genau an, so findet man zudem auch noch folgenden Auszug:


Supported PHP Versions

pthreads v3 requires PHP7 or above. PHP5 needs to use pthreads v2 which can be found in the master branch.

LucidTrip
15.01.2016, 20:45
cUrl wurde ja schon genannt.

Ansonsten würde mir noch xargs (https://wiki.ubuntuusers.de/xargs/) mit der Funktion system() (https://secure.php.net/manual/en/function.system.php) einfallen, was aber nur unter Linux System läuft.

Was mir noch einfällt wäre mit AJAX (jQuery oder so) mehrere Verbindungen paralell laufen lassen.

Zwar alles kein echtes threading, aber egal.