Home  >  Article  >  Backend Development  >  PHP能不能把库一次加载永恒使用

PHP能不能把库一次加载永恒使用

WBOY
WBOYOriginal
2016-06-13 12:56:18807browse

PHP能不能把库一次加载永久使用
比如一个库, 几乎所以页面都有调用它, 有没有一种方式, 不用在每个页面都require它, 前提是这是一个函数库, 实际上每次加载都不执行代码.


------解决方案--------------------
引用:
比如一个库, 几乎所以页面都有调用它, 有没有一种方式, 不用在每个页面都require它, 前提是这是一个函数库, 实际上每次加载都不执行代码.


引用文件就是自上自下始终继承的原则。假如a是你的全局文件。那么b引用了a,c引用b的时候,同时也就引用了a。e如果没有引用b就需要自己引用a。

要实现你说的方式,有三种方法:

1 把系统设计成单入口,入口处每次都加载一个全局文件,把你的全局文件让入口文件引用就成了。你可以参考mvc框架的设计方式。

入口文件 -> bootstrap -> front_controller -> router mapping -> controller a
                                                                                                -> controller b
                                                                                                -> controller c

在bootstrap中引用你的全局文件。
   
2 实现autoload,这样当你实例一个当前不存在的class时,它会自动去加载那个文件。

3 把你的库写成php扩展,php的扩展在php进程启动时就会自动加载并一直在进程中存在。
------解决方案--------------------
补充楼上
4.php.ini 自动加载文件,请参考 auto_prepend_file, auto_append_file ,注意session等等全局的问题
5.web服务器自动加载,参考服务器文档
6.系统自动加载,参考系统文档
------解决方案--------------------
如果你能安装成功 apc 扩展,那么他会缓存一些代码在内存中,而不必每次多文件

原来有个 eAccelerator 扩展,效果也不错,但是 php5.3 以后就不能用了
至于 apc 扩展,由于始终都没有加载成功。所以不知道是否像他说的那么管用
------解决方案--------------------
引用:
如果你能安装成功 apc 扩展,那么他会缓存一些代码在内存中,而不必每次多文件

原来有个 eAccelerator 扩展,效果也不错,但是 php5.3 以后就不能用了
至于 apc 扩展,由于始终都没有加载成功。所以不知道是否像他说的那么管用


嗯 5.x后开始用 apc了.可以,感觉没有eAccelerator那么明显 不过可能是心理作用吧。


------解决方案--------------------
看到这个标题      我想了很久,对这个我不懂
------解决方案--------------------
遍历项目文件,将文件路径存储在一个文件里面,并且序列化,设置一个过期时间,每次直接从序列化的文件当中去读取,可以参考php的自动加载文件函数spl_autoload_register() 。
------解决方案--------------------
引用:
引用:看到这个标题      我想了很久,对这个我不懂

其实我这里只是问一下, 系统频繁的读取一个文件是有优化的, 如果真实从磁盘频繁加载, 速度是不可忍受的, 这些数据都会在内存里, 所以多次读取同一个文件, 文件不是很大, 内存足够的话, 速度是非常快的.

但是即使如此, 重复加载一个大页面也是有问题的, 所以, ……


就是楼上们说的APC
------解决方案--------------------
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn