因此,我有一个PHP文件,它将随机接收第三方发布的新数据。为了简单起见,让我们将其命名为get_data.php,并将其称为如下所示:
<?php
$data = $_REQUEST;
// Data processing然后我有一个单独的脚本stream.php,它使用HTML5 服务器发送事件将数据流到(JS)客户端:
<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');
while (true) {
echo 'data: ' . $data . PHP_EOL;
echo PHP_EOL;
ob_flush();
flush();
sleep(1);
}每个脚本本身都运行良好。但是,我需要将$data从第一个脚本传递到第二个脚本。
我知道我可以通过将变量存储在DB或temp文件中来实现这一点,但理想情况下,我可以单独使用PHP来实现这一点。
在另一个文件中包含一个文件看起来也不是一个好的选择,因为流头可能会在第三方发布数据时把事情搞砸,我希望将数据处理与流分开,以防后者崩溃。
注意到--这并不是询问如何在网页上在$_SESSION脚本之间传递数据的其他问题,因为我似乎不能使用$_SESSION变量,因为数据是由与访问事件流的用户不同的第三方发布的。
发布于 2016-11-20 13:39:36
您可以使用共享内存在离散脚本之间传递数据。http://php.net/manual/en/intro.sem.php
这将需要两个脚本都运行在同一台物理机器/vm上,并且需要确定一种方法来确定哪个共享内存块用于哪个会话。
您可以将其与系统消息队列结合起来,以指示新数据何时(以及可能在何处)到达。尽管要小心,因为这些是在Linux/BSD/Unix系统上用不同的限制实现的(MacOS有一些Linux没有的恼人的限制)
HTH
https://stackoverflow.com/questions/40704594
复制相似问题