L'exécution des fonctions en parallèle en PHP

Peut appeler une fonction PHP et ne pas attendre qu'il revienne? Donc quelque chose comme ceci:

function callback($pause, $arg) {
    sleep($pause);
    echo $arg, "\n";
}

header('Content-Type: text/plain');
fast_call_user_func_array('callback', array(3, 'three'));
fast_call_user_func_array('callback', array(2, 'two'));
fast_call_user_func_array('callback', array(1, 'one'));

serait sortie de

one (after 1 second)
two (after 2 seconds)
three (after 3 seconds)

plutôt que

three (after 3 seconds)
two (after 3 + 2 = 5 seconds)
one (after 3 + 2 + 1 = 6 seconds)

Script principal est prévu pour être exécuté en tant que processus permanent (serveur TCP). callback() la fonction est de recevoir des données de client, effectuer des script PHP et de faire quelque chose sur la base d'autres arguments qui sont passés à callback(). Le problème est que le script principal ne doit pas attendre externe script PHP à la fin. Résultat de script externe est importante, donc exec('php -f file.php &') n'est pas une option.


Edit:
Beaucoup ont recommandé de prendre un coup d'oeil à PCNTL, de sorte qu'il semble qu'une telle fonctionnalité puisse être atteint. PCNTL n'est pas disponible dans Windows, et je n'ai pas accès à une machine Linux, donc je ne peux pas le tester, mais si beaucoup de gens l'ont conseillé, alors il devrait faire l'affaire 🙂

Merci à chacun de vous!

OriginalL'auteur binaryLV | 2010-06-08