我可以创建服务器php变量吗?

时间:2012-02-12 02:26:47

标签: php

我希望拥有自己的变量(很可能是一个数组)来存储我的php应用程序。

应用程序可以触发几个后台进程(比如下载文件),我希望列出当前正在处理的内容。

例如

  • 如果php调用将下载15分钟的exec()
  • 然后再开始下载
  • 并开始另一次下载

然后,如果我访问我的应用程序,我希望能够看到3 downloads正在进行中。如果他们都没有完成。

能做到吗?只在内存中,不在磁盘上存储任何内容?

我认为解决方案是某种服务器变量。

3 个答案:

答案 0 :(得分:2)

PHP不了解以前的流程。一旦完成了php进程,它所知道的一切就会随之而来。

我可以想到两个选择。将有关生成的进程的知识写入文件或数据库,并使用它来同步所有的php请求,(存储每个生成的进程的PID)

创建守护程序。 PHP背后的人们一直在努力清理PHP内存处理,以使其更加可行。看看他们的PEAR包 - http://pear.php.net/package/System_Daemon

在我的头顶上,一个快速的架构将由3个peices组成

A部分)将接受下载请求的Web应用程序,并报告所有请求的进度

B部分)你守护进程,它接受下载请求,生成进程,并将报告所有生成的请求的状态

C部分)将执行您需要的下载的生成请求。

答案 1 :(得分:1)

您无法在$ _SERVER中存储自己的变量。最好的方法是将数据存储在数据库中,并根据需要进行查询/更新。

答案 2 :(得分:1)

shared memory的任何人?

显然你必须拥有某种守护进程,但你可以使用内置的信号量函数轻松地在每个脚本之间进行联系。你需要小心,因为有时如果你没有正确关闭内存块,你可能会冒险没有剩下的块。