将数据从PHP脚本传递到PHP事件流

时间:2016-11-20 13:30:36

标签: php parameter-passing server-sent-events event-stream

所以我有一个PHP文件,它将从第三方随机接收新发布的数据。为简单起见,我们称之为get_data.php,并说它看起来像这样:

<?php
$data = $_REQUEST;
// Data processing

然后我有一个单独的脚本stream.php,它使用HTML5 Server-Sent Events将数据流式传输到(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或临时文件中来实现这一点,但理想情况下,我可以通过PHP单独执行此操作。

将一个文件包含在另一个文件中并不是一个好的选择,因为流标题可能会让第三方发布数据变得混乱,我想保留数据如果后者崩溃,则与流分开处理。

注意 - 这不是要求如何在网页上的PHP脚本之间传递数据的其他问题的重复,因为我似乎无法使用$_SESSION变量,因为数据是由与访问事件流的用户不同的第三方。

1 个答案:

答案 0 :(得分:1)

您可以使用共享内存在不同脚本之间传递数据。 http://php.net/manual/en/intro.sem.php

这将要求两个脚本在同一物理机器/ vm上运行,并且您需要确定一种识别哪个共享内存块用于哪个会话的方法。

您可以将其与系统消息队列结合使用,以指示新数据何时(以及可能在何处)到达。虽然要小心,因为这些在Linux / BSD / Unix系统上有不同的限制(MacOS有一些恼人的限制,Linux没有)

HTH

相关问题