在长时间运行的Eventsource脚本中重新打开php7.2会话?

时间:2018-03-18 01:52:46

标签: php session-state server-sent-events php-7.2

自升级到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可能是相关的。

更新:添加了工作代码示例,以防有人想要测试它。

0 个答案:

没有答案