Multithreading in PHP
Multithreaden in PHP is vanuit de core natuurlijk niet mogelijk, maar er zijn wel enkele omwegen. Ik vroeg me af hoe ik in bestand `loader.php` een x-aantal andere scripts kan aanroepen, zonder dat er gewacht wordt tot de scripts volledig uitgevoerd zijn, de scripts hoeven dan ook niks te returnen en wat de beste manier hier voor is. Heb het een en ander geprobeerd mbv exec(), maar hierbij wordt er gewacht tot het de execution klaar is, wat ik dus niet wil.
Is het gebruik van AJAX een oplossing? De scripts worden dan weliswaar niet tegelijkertijd uitgevoerd, maar een webpagina die je laadt is wel gewoon beschikbaar terwijl de scripts op de achtergrond uitgevoerd worden...
Dat zou een oplossing kunnen zijn, maar het zijn scripts die intensieve taken uitvoeren en dus als ik deze laad met AJAX zijn ze volgens mij gevoelig voor een user abort, ook als ignore_user_abort(true), en set_time_limit(0) staan aangegeven. Tenminste, zoiets dacht ik ergens gelezen te hebben. Dus, als het mogelijk is, liever een pure PHP manier.
pcntl-fork() een parallel proces kunnen starten.
Ik heb er geen ervaring mee maar volgens mij moet je met Toevoeging op 22/10/2012 00:08:26:
Uiteindelijk er toch voor gekozen om met exec te werken, omdat het gewoon irritant is om niet te kunnen multithreaden maar te moeten forken haha. Exec commando's kun je wel van de parent onafhankelijk maken, (forken ook, maar dan krijg je een zombie) op deze manier:
Dit is dus het eindresultaat, en het werkt. Nu maar wachten tot multithreaden naar PHP komt.
Gewijzigd op 21/10/2012 23:00:45 door Young Roger
Maar als ik hoor wat je wil, zou ik onmiddellijk aan Ajax denken.
Verder heb je trouwens ook de web worker.
Dan heb je een minimale tijd waarbij de gebruiker moet wachten op Apache (de pagina wordt geladen); en achter zijn rug wordt dat tweede verzoek uitgevoerd.
Je kan met javascript volledig zelf controleren in welke volgorde het moet; wie op wie moet wachten, ...
En ondertussen kan de gebruiker verder doen wat hij wil.
http://nl1.php.net/thread
Ik snap trouwens wel dat je niet via ajax wilt gaan werken. Maar met exec lijkt me ook niet ideaal
Wat denk je hier van? Ik snap trouwens wel dat je niet via ajax wilt gaan werken. Maar met exec lijkt me ook niet ideaal
Gewijzigd op 22/10/2012 10:59:53 door TJVB tvb