我希望拥有自己的变量(很可能是一个数组)来存储我的php应用程序。
应用程序可以触发几个后台进程(比如下载文件),我希望列出当前正在处理的内容。
例如
然后,如果我访问我的应用程序,我希望能够看到3 downloads
正在进行中。如果他们都没有完成。
能做到吗?只在内存中,不在磁盘上存储任何内容?
我认为解决方案是某种服务器变量。
答案 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的任何人?
显然你必须拥有某种守护进程,但你可以使用内置的信号量函数轻松地在每个脚本之间进行联系。你需要小心,因为有时如果你没有正确关闭内存块,你可能会冒险没有剩下的块。