2010-04-14 22 views
1

我想从始终运行并不断更新变量的命令行运行php脚本。轮询正在运行的php cli脚本

然后,我希望任何在此期间运行的php脚本(可能但不一定是来自web)能够随时读取该变量。

任何人都知道我该怎么做?

谢谢。

+0

我只会使用Redis。快速,简单,并且可以使用RPC在CLI和Web脚本之间进行更多的通信。 – Xatoo 2015-12-14 12:05:31

回答

1

在这里,你想要某种进程间通信机制。

你不能使用PHP变量:这些对于他们在中的脚本是本地的。

这意味着你将不得不使用一些“外部”的工具来存储你的数据一样,只说几个:

  • 文件
  • 数据库(的SQLite,MySQL和...)
  • 一些shared-memory

在每一种情况下,你必须:

  • 一个脚本,写入数据存储空间 - 即你的第一个始终运行脚本
  • 一个或多个其他脚本,将来自数据存储读取
+0

打了我一分钟:) – David 2010-04-14 06:47:23

0

您应该使用CLI脚本将该变量写入文件,并使用其他脚本读取该文件。

一定要使用flock来防止竞争条件。

+0

在某些情况下,你不能依靠羊群。有关更多信息,请参阅php.net。 – Ron 2012-11-28 13:52:09

0

你可以写一个PHP插座基于服务器的服务器脚本,它将监听所需的端口。查找文章here。 然后,您的客户端php脚本可以在本地或从Web连接到它并检索任何数据,包括变量。 您可以使用您设计的任何简单协议或像XML这样众所周知的协议来传输变量。

0

很多想法的的:

  1. 在设定的时间间隔也追加/写入一个文件。
  2. 您使用sqlite并将数据写入它。
  3. 您使用小型memcached服务作为您的中介。
  4. 你有点疯了,写一个套接字类,在一个端口上侦听,然后进行非阻塞调用来检查。

1-2大概是最简单的 3将工作的伟大,如果你需要查询值很多 4将是有趣的,但可能不值得努力。