如何删除由pctnl_fork()添加的标头?

时间:2012-06-07 02:03:26

标签: php http-headers

我正在使用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()会修复它,但事实并非如此。如果有人有任何建议,我会永远感激。

1 个答案:

答案 0 :(得分:0)

请勿在Web服务器环境(例如mod_php)中使用pcntl_fork()。正如您所观察到的那样,它在Web服务器中运行时无法正常运行,因此在较新版本的PHP中,它无法在CLI SAPI之外使用。