J'ai écrit un script PHP qui doit effectuer un fork et effectuer un traitement en parallèle, puis la page principale retourne les données après le traitement. J'utilise actuellement les fonctions de pcntl pour faire ceci. J'ai besoin d'exécuter entre 2 et 10 threads pour travailler en parallèle, et je dois attendre jusqu'à ce que j'obtienne un résultat de tous les threads avant que le script ne sorte dans le navigateur.Comment puis-je empêcher les en-têtes en double lorsqu'il s'agit de threads en PHP?
Malheureusement, je trouve que j'ai plusieurs en-têtes « Content-Type » apparaissant dans la sortie:
Content-Type: text/plain
Content-Type: text/plain
Content-Type: text/plain
[... actual content ...]
Il semble être un en-tête par thread a donné naissance. J'ai essayé de fermer STDOUT
via fclose(STDOUT)
avant le traitement, et j'ai essayé d'entourer tout par tampon de sortie en vain. Je n'ai encore trouvé personne d'autre avec ce problème, donc personne n'essaie de le faire ou je fais quelque chose qui sort des sentiers battus.
Je suis vraiment à la recherche de l'un ou l'autre moyen d'arrêter cela, ou des suggestions sur d'autres façons d'y arriver.
Le serveur est configuré pour utiliser PHP comme CGI sous mod_suPHP, si cela fait une différence.
Je ne peux rien vous dire d'utile sans un échantillon de code correct – Kris
Si une clé d'en-tête existe, elle sera écrasée, à mon avis. – powtac
Je crois que le forking de l'intérieur d'Apache est un non-non. Lancer un nouveau processus via exec, et avoir * that * une fourchette. –