自升级到php7.2后调用session_start()
时出现新错误:
PHP警告:session_start():在第20行的Example.php中已经发送标头时无法启动会话
此警告阻止写入会话。这发生在我用于Eventsource(服务器发送事件)的长期运行的php脚本中。要响应某些事件,脚本应更新会话值。这段代码适用于php7。
示例:
header("Content-Type: text/event-stream\n\n");
session_start();
session_write_close();
$i = 0;
while(true){
sleep(3);
// At some point new information is retrieved
$NewValue = $i++;
if ($NewValue % 2 == 0){
$SomethingInterestingHappened = true;
}else{
$SomethingInterestingHappened = false;
}
if($SomethingInterestingHappened){
session_start(); // <- this line throws error
$_SESSION['CurrentRecord'] = $NewValue;
session_write_close();
}
// Writes cool things to browser
}
有没有人知道如何使用本机php7.2工作?或建议第三方解决方案?
我发现bug reports可能是相关的。
更新:添加了工作代码示例,以防有人想要测试它。