23.7 Prozesse forken

Problem

Sie wollen einen Prozess zur Laufzeit kopieren.

Lösung

Verwenden Sie die Prozess-Kontrollfunktionen von PHP, um einen Prozess zu duplizieren und somit mehrere Aufgaben auf einmal zu erledigen:

<?php $kinder = 5; $pids = array(); for ($i=1; $i<=$kinder; $i++) { $pid = pcntl_fork(); if ($pid === -1) { exit("Der Prozess konnte nicht kopiert werden.\n"); } elseif ($pid) { $pids[$i] = $pid; continue; } else { erledigeAufgabe($i); break; } } while(true) { $prozesse = 0; foreach ($pids as $nummer => $pid) { $status = null; $result = pcntl_waitpid($pid, $status, WNOHANG); if ($result === 0) { $prozesse++; } } if ($prozesse == 0) { exit("Alle Prozesse beendet.\n"); } echo "$prozesse Prozesse arbeiten noch.\n"; sleep(2); } function ...

Get PHP 5 Kochbuch, Third Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.