2014-03-24 12 views
0

我已经找到Own SuperGlobal Variable in PHP? 这里说它没有办法以某种方式定义/使用“服务器变量”,这对于不同的用户/会话将是相同的。 但是几年过去了,可能会发生什么变化?现在这样可能吗?PHP:定义自己的服务器变量

基本上我想运行由用户事件触发的php脚本,但我不想运行更频繁,例如,每30分钟一次。所以我的第一个想法是保持“服务器端var(对所有会话/客户端可见)”,如果用户触发事件(例如打开某个页面),检查脚本是否最近运行了30分钟,然后打开页面,如果没有然后再打开页面,例如清除过时/通过的东西。

是的,我明白我可以用mySQL等解决方案...但为什么要做workaroud如果PHP将支持我所需要的。

预先感谢您!

+0

请参阅此meta文章 - [如何注意旧的未解答的问题?](http://meta.stackexchange.com/questions/7046/how-do-i-get-attention-for-old -unanswered-问题)。只是再次发布相同的问题并不是在[so]上完成的方式。 – Lix

+0

除此之外,对于你所描述的特殊用例,我可能只需要一个简单的_file_结合'filemtime'和'touch' ... – CBroe

回答

1

一个普通的PHP 变量不能超越脚本的当前执行。脚本结束后,所有变量都消失了。这是PHP的基本性质;实际上这是所有计算机程序的基本特性,只是PHP通常总是很快终止。为了保持数据超出了一个简单的脚本调用,你有几种选择在哪里存储数据:

  • 数据库
  • 文件
  • shared memory(尽管这可以随时清除)
  • 内存缓存像memcached(基本上是一个内存数据库服务器)
  • 运行一个持久的PHP脚本并通过套接字与它进行通信(基本上是一个memcache)
  • 不会终止你的脚本,把它写成守护进程

最近没有什么改变。

+0

deceze,谢谢你关于计算机程序的有趣的信息。由于PHP服务器始终在“运行”,我期望它有我想要的东西是合理的(恕我直言) – user2997497

+0

不,“PHP服务器”没有运行。 * Apache *(或nginx或其他Web服务器)正在运行,它为每个请求启动一个独立的PHP实例。 PHP脚本本身被启动并不断被拆除。要编写一个持久化脚本,你必须明确地使其持久化(通常意味着一个无限循环'while(true){...}')。这与任何其他语言的程序都没有任何区别。 – deceze

+0

我不得不同意:) – user2997497