我无法解决这个问题。
我目前正在其自己的文件中运行我的SSE(服务器发送事件)后端代码。
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache'); // recommended to prevent caching of
event data.
function sse_send($msg) {
echo "id: " . time() . PHP_EOL;
echo "data: " . $msg . PHP_EOL;
echo PHP_EOL;
ob_flush();
flush();
sleep(1);
}
我通过shell_exec()调用此文件,传递1个我想发送给客户端的变量。
我的问题是,我可以看到字符串被传递为$ argv [1],但我无法将其发送到客户端,因为它返回0.我可以手动将其输入到客户端发送功能,它会工作。我可以比较$ argv [1] ==='在这里插入它的值'如果我使用$ argv [1]或我赋予它的任何其他变量值,它会因为某种原因而无法发送给客户端。
答案 0 :(得分:0)
使用外部文件的include()
,而不是shell_exec()
。它将更高效,更可靠(没有机会陷入安全模式限制),最重要的是,它应该可以工作。
我假设调用shell_exec()
的php脚本正在Web服务器中运行。当你用shell_exec()
调用一个php脚本时,它将它作为一个单独的php进程运行,并带有自己的stdin / stdout / etc.您需要在Web服务器内运行的流程中运行flush()
,ob_flush()
也需要运行{。}}。