我正在使用pctnl_fork将一个大型任务分解为多个进程,除了一个令人讨厌的东西之外它工作得很好:由于某种原因,输出中嵌入了“Content-type:text / html”,而我似乎无能为力摆脱它。
以下是该问题的一个有效例子:
<?php
ob_start();
$pid = pcntl_fork();
if ($pid == -1) {
die('could not fork');
} else if ($pid) {
// we are the parent
pcntl_wait($status); //Protect against Zombie children
} else {
$fh=fopen('/var/www/html/test.txt','w');fwrite($fh, time());fclose($fh);
exit(0);
}
header_remove();
ob_end_clean();
echo " done";
?>
如果省略header_remove(),则输出
X-Powered-By: PHP/5.3.3 Content-type: text/html done
使用header_remote它会删除X-Powered-By标头,但Content-type标头仍然存在:
Content-type: text/html done
我把头发拉出来试图解决这个问题无济于事。我当然认为ob_end_clean()会修复它,但事实并非如此。如果有人有任何建议,我会永远感激。
答案 0 :(得分:0)
请勿在Web服务器环境(例如mod_php)中使用pcntl_fork()
。正如您所观察到的那样,它在Web服务器中运行时无法正常运行,因此在较新版本的PHP中,它无法在CLI SAPI之外使用。