Szt*_*upY 17 php state caching frameworks persist
我过去一直在使用rails,merb,django和asp.net mvc应用程序.他们共同的(与问题相关)是他们拥有建立框架的代码.这通常意味着创建持久的对象和状态,直到Web服务器被回收(如设置路由,或检查哪些控制器可用等).
据我所知,PHP更像是一个CGI脚本,每次运行时都会被编译成一些字节码,并且在请求之后它被丢弃.当然,您可以拥有会话,在同一用户的请求之间保留数据,并且我看到有像APC这样的扩展,您可以使用它来在服务器级别的请求之间保留对象.
我的问题是:如何创建一个像rails这样的PHP应用程序?我的意思是一个应用程序,在第一个请求设置框架,然后在第二个和后来的请求使用已经设置的对象.mod_php中是否有一些内置的缓存工具?(例如,存储已执行的php应用程序的已编译字节码)或者是使用APC或某些类似扩展来解决此问题的唯一方法?你会怎么做?
谢谢.
编辑:替代问题:如果我创建一个大的PHP应用程序,它具有非常大的设置时间,但运行时间较短(如上面提到的框架中)那么我应该如何"缓存"已经设置的东西(这可能意味着很多东西,除了可能是数据库连接,因为你已经在PHP中拥有持久连接).
为了证明大的设置时间:如果我使用PHP反射检查哪些对象可用并根据它设置运行时该怎么办?进行大量反射通常很慢,但只需要执行一次(并且仅在修改源代码时重新进行评估).
编辑2:那似乎是APC.它自动缓存字节码这一事实很有用.
不确定APC是否是唯一的解决方案,但APC确实解决了您的所有问题.
首先,您的脚本将使用APC编译一次,字节码存储在内存中.
如果您需要花费很长时间进行设置,您还可以将其作为用户数据缓存在APC中.例如,我一直这样做,
$table = @apc_fetch(TABLE_KEY);
if (!$table) {
$table = new Table(); // Take long time
apc_store(TABLE_KEY, $table);
}
Run Code Online (Sandbox Code Playgroud)
使用APC,每个服务器实例只执行一次创建表的任务.
| 归档时间: |
|
| 查看次数: |
7895 次 |
| 最近记录: |