巨大的PHP文件脚本

时间:2014-05-31 12:05:19

标签: php

我有PHP脚本(机器生成),大小为3MB。其内容主要是switchesecho的一对。这不是什么,只有echos。 我正在使用它作为"缓存"对于慢速SQL查询,所以我为这个PHP生成所有可能的输出,然后在URL中使用ID来获得适当的结果。

到目前为止,我一直在使用700KB的脚本,一切都还可以。现在,我添加了一些数据,最终得到3MB。可以运行它还是我应该考虑其他解决方案?

2 个答案:

答案 0 :(得分:1)

使用缓存库而不是将内容打包到机器生成的PHP文件中,因为每次调用时都必须解释该大小的PHP文件,从而将托管服务器性能降低

一个流行的缓存组件是https://github.com/illuminate/cache - 在Laravel中使用。您应该能够在框架之外的程序中使用它。

而且,如果你觉得它更舒服,你可以自己动手。不确定您使用什么逻辑来缓存查询(它是字面的,简单的还是复杂的),但是通过md5()来简单地将奇怪的字符串与文件名相关联:

function get_query( $sql ) {
    $cache_filename = sprintf( "cache/%s.sql", md5($sql) );

    if( file_exists($cache_filename) ) {
        return( file_get_contents($cache_filename) );
    }

    // otherwise, perform the query
    $data = ...
    file_put_contents( $cache_filename, $data );

    return( $data );
}

文件名看起来都像MD5哈希。例如,如果您的查询为"show tables",则文件名为cache/489b4ceb2f4301a7132628303f99240d.sql

答案 1 :(得分:1)

听起来你正在滚动你自己的轮子。请考虑使用广泛接受的缓存解决方案,例如APCmemcache

还要考虑使用Zend caching component,它可以从框架的其余部分中提取和使用,并为许多缓存后端提供抽象API,包括基于文件,APC和内存缓存。

您所描述的解决方案可能会为每次执行使用过多的内存,浪费CPU解析不必要的PHP代码,并且难以处理失效等问题。