[php] 如何处理好autoload
在有了诸如apc之类的cache之后,php的autoloader成为了需要认真考虑的性能点。
参见:
http://stackoverflow.com/questions/4788452/does-autoload-really-kill-performance-when-using-apclatest-versions-up-to-date
http://tournasdimitrios1.wordpress.com/2013/04/15/boosting-the-performance-of-a-php-project-with-an-autoload-class-map-2/
有资料说autoloader和apc并不冲突。但是autoloader仍然需要每次request都要去require_once,这会带来额外的磁盘stat()操作。能否继续优化呢?
有个思路是利用class_exists,然后定期的检查php file是否已更新。这可以避免每次请求都一堆的require_once造成的磁盘stat()操作。
大多数应用并不关心php文件是否延迟100毫秒才更新到最新版。定时、延时的php file版本更新应该是可接受的。不知道require_once()内部有没有做这种优化。
也许应该让require_once()函数直接带上个参数,指明磁盘stat()的调用间隔。这可以简单但是有效的提高性能。
查了下apc的资料:
apc.stat
apc.include_once_override
看来apc也注意到了这个问题,但是apc的解决方案貌似还不成熟。目前仍是EXPERIMENTAL的。
有篇文章很好的解释了apc和require_once的关系:http://www.laruence.com/2012/09/12/2765.html
[php] 如何处理好autoload的更多相关文章
- ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求
我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...
- Nginx如何处理一个请求
看了下nginx的官方文档,其中nginx如何处理一个请求讲解的很好,现在贴出来分享下.Nginx首先选定由哪一个虚拟主机来处理请求.让我们从一个简单的配置(其中全部3个虚拟主机都在端口*:80上监听 ...
- ASP.NET Core管道深度剖析(3):管道是如何处理HTTP请求的?
我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但是就具体的实现来说,由于其中涉及很多对象的交互,我想很少人能够地把它弄清楚.为了让读者 ...
- ENode框架Conference案例分析系列之 - 事件溯源如何处理重构问题
前言 本文可能对大多数不太了解ENode的朋友来说,理解起来比较费劲,这篇文章主要讲思路,而不是一上来就讲结果.我写文章,总是希望能把自己的思考过程尽量能表达出来,能让大家知道每一个设计背后的思考的东 ...
- postgresql是如何处理死连接(转)
在数据库postgresql中,一个客户端到服务器连接实际上是一个tcp socket连接,tcp连接是虚连接,一方非正常退出(如断电),另一方会继续维持这个连接. 举个例子,一个客户端电脑正常连 ...
- 转:spl_autoload_register与autoload的区别详解
转:http://www.poluoluo.com/jzxy/201306/209614.html spl_autoload_register(PHP 5 >= 5.1.2)spl_autolo ...
- (转)如何处理iOS中照片的方向
如何处理iOS中照片的方向 31 May 2015 • 7 min. read • Comments 使用过iPhone或者iPad的朋友在拍照时不知是否遇到过这样的问题,将设备中的照片导出到Wind ...
- 新增资产时YTD折旧与累计折旧录入错误如何处理
如新增资产时YTD折旧与累计折旧录入错误,但资产已入账处理,如何处理: 1.需要先报废资产: 2.需要在总账手工帐冲销未冲抵凭证: 3.重新增加资产,录入资产时YTD折旧及累计折旧金额应为0.
- 答:SQLServer DBA 三十问之三:有哪些操作会使用到TempDB;如果TempDB异常变大,可能的原因是什么,该如何处理
3. 有哪些操作会使用到TempDB:如果TempDB异常变大,可能的原因是什么,该如何处理: tempdb的用途:1)存储专用和全局临时变量,不考虑数据库上下文: 2)与Order by 子句,游标 ...
随机推荐
- check constraints
SELECT constraint_name, constraint_type, column_name, STATUSfrom user_constraints natural join user_ ...
- Spring_Aop_(二)
切面的优先级 @Order(1)注解 指定切面的优先级,值越小优先级越高 @Order(1) @Aspect @Component public class VlidationAspect { @Be ...
- Django-2.2.1版本关于无法使用makemigrations的错误
报错 django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0. ...
- No.4 Verilog 表达式
4-1 操作数 常数.参数.线网.变量.位选.存储器.数组. *部分位选: integer mark; :] inst; :] gpio; inst[mark+ : ] //选择 mark,mark+ ...
- Selenium-----wait的三种等待
在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错.这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待, ...
- n!素因子p的幂 swjtuOJ 2090【数论】
原文地址:http://blog.csdn.net/u012717411/article/details/47334969(感谢作者) 素因子分解写的非常好!数论一道好题:给以两个大整数n,s(n&l ...
- ural1297 后缀数组+RMQ
RMQ即求区间(i,j)的最值.通过O(nlogn)处理,O(1)给出答案. RMQ主要是动态规划来做.dp[i][j]表示从i开始的长为2^j的区间最值. 那么可以得到dp[i][j]=max(dp ...
- 折腾spring boot 应用
开发环境 安装配置java环境 配置maven环境,修改镜像地址 <mirror> <id>aliyunmaven</id> <mirrorOf>*&l ...
- 在oracle中操作数据——使用特点的格式插入日期 sql函数的使用——日期函数
日期函数用于处理date类型的数据,默认情况下的日期格式是dd-mm-yy即12-7月-78 (1)sysdate:该函数返回系统时间 (2)add_months(d,n) (3)last_day(d ...
- 关于Spring+mybatis+PageHelper分页插件PageHelper的使用策略
把插件jar包导入项目(具体上篇有介绍http://blog.csdn.net/qq_33624284/article/details/72821811) spring-mybatis.xml文件中配 ...