Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以定义PHP加载时在内存中保留的常量?_Php - Fatal编程技术网

有没有一种方法可以定义PHP加载时在内存中保留的常量?

有没有一种方法可以定义PHP加载时在内存中保留的常量?,php,Php,有没有办法定义在服务器上启动PHP进程时引导到内存中的常量?如果是这样的话,那么它也可以通过数组、类和函数来实现吗 在人们开始列出跨页面和范围的不同声明方式之前:我不是从编码方便的角度,而是从性能的角度来问这个问题 每次执行脚本时,都要从页面或数据库等加载永不更改的内容,这似乎是一种浪费。作为一个服务器端进程,我认为PHP有某种方法可以一次性将内容读入内存,并使它们始终可用 您要查找的是操作码缓存。操作码缓存的工作原理是将PHP文件的编译内容存储在共享内存中,然后在将来包含/需要该文件时使用该数

有没有办法定义在服务器上启动PHP进程时引导到内存中的常量?如果是这样的话,那么它也可以通过数组、类和函数来实现吗

在人们开始列出跨页面和范围的不同声明方式之前:我不是从编码方便的角度,而是从性能的角度来问这个问题


每次执行脚本时,都要从页面或数据库等加载永不更改的内容,这似乎是一种浪费。作为一个服务器端进程,我认为PHP有某种方法可以一次性将内容读入内存,并使它们始终可用

您要查找的是操作码缓存。操作码缓存的工作原理是将PHP文件的编译内容存储在共享内存中,然后在将来包含/需要该文件时使用该数据缩短标准代码解析过程

此时的规范操作码缓存是,但存在许多其他操作码缓存,包括和


操作码缓存不会缓存数据库中的数据。不过,您还可以使用其他扩展来协助此过程,例如将它们存储在共享内存中,或者将它们存储在外部进程中。但是,这一切都不是自动的,因为缓存数据库中的数据需要一些应用程序知识,以了解什么对缓存有用,并在更新数据库时处理缓存失效。

一般来说,php是一个单一的运行环境,它实际上不会持续运行(与java不同)。Php只有在收到命令时才开始工作。然后它将代码解析为操作码,并最终执行它。从技术上讲,每个请求(或CLI命令)都会发生这种情况


但是,有几种方法可以缓存操作码,而不用花太多精力使用APC:

只是想注意一下我在研究这一点时学到的一些东西:Opcache包含在PHP5.5+中,通过安装Zend Opcache扩展(我必须这么做,现在它正在运行)可用于PHP5.2+。即使在5.5+中,也需要显式启用它。Opcache并没有完全按照我在问题中提出的那样(我问的是如何将选定的内容发送到内存),但它做得更好——它编译所有PHP脚本并将其缓存到内存中。谢谢你(伍夫:)