2014-05-05 35 views
1

有没有一种方法可以定义在服务器上启动PHP进程时启动到内存中的常量?如果是这样,它可以用数组,类和函数来完成吗?有没有办法定义PHP加载时在内存中保留的常量?

人启动上市申报的事情,这将是跨页和范围可用不同的方式前:我问这从编码方便,而是性能的角度来看。

在每个脚本执行过程中,从页面或数据库等中继续加载永不改变的东西似乎是一种浪费。作为一个服务器端的过程,我认为PHP有​​一些方法可以将内容读入内存,并使其始终可用。

回答

2

你在找什么是一个操作码缓存。 Opcode缓存的工作方式是将PHP文件的编译内容存储在共享内存中,然后在将来包含/需要该文件时使用该数据来短路标准代码解析过程。

此时的规范操作码高速缓存是PHP opcache extension,但存在许多其他操作码高速缓存,包括APCXCache

操作码高速缓存不会从数据库中缓存数据。但还有其他扩展可用于协助此过程,例如APCu将它们存储在共享内存中,或memcached将其存储在外部进程中。但是,这些都不是自动的,因为从数据库中缓存数据需要一些应用知识来了解缓存有用的内容,以及在更新数据库时处理缓存失效。

+0

只是想指出一些事情寻找到这个时候我才知道:Opcache包含在PHP 5.5+和可用对于PHP 5.2+,通过安装Zend Opcache扩展(我必须做的,现在正在运行)。即使在5.5+以上,也需要明确启用。 Opcache并没有完全按照我在问题中提出的问题(我问到将所选内容发送到内存中),但它做得更好 - 它将所有PHP脚本编译并缓存到内存中。谢谢黄昏:) – equazcion

1

一般来说,php是一个单一的恶劣环境,它并不实际运行(不像java)。 Php只在收到命令时才开始工作。然后它将代码解析为操作码并最终执行它。这在技术上发生在每个请求(或CLI命令)上。

但是,有几种方法可以如何缓存与APC没有太多的努力码:http://www.php.net/manual/en/book.apc.php

相关问题