为AJAX应用程序(PHP)加载一次核心


Load once core for AJAX Applications (PHP)

我正在通过PHP建立一个功能齐全的AJAX (jquery)画廊网站。

我有一个CORE准备从其他网站我已经建立。

我的问题是这样的:我想加载网站核心(db, urlmanager, defines&常量等)只有一次,而不是在我加载ajax的每个页面。

。E:我有这些页面:gallery.php, init.php, albums.php

但是当我调用每个AJAX ($.ajax......我需要做"require_once…"core.php "

并在每次调用时打开另一个DB连接。

有解决方案吗?如果没有,在ajax应用程序中适合php的最佳方法是什么?

PHP是一种脚本语言,所以您确实需要在每个页面加载时包含(或要求)所有相关文件。有一些解决方案可以让你的事情变得更容易,但它们并不能改变根本的事实。

可能的解决方案:

  • 将核心文件保存到单个.phar (PHP存档)文件中。 PHAR是一种将整个库合并到单个文件中的方法,以便更容易加载。您仍然需要在程序中包含phar文件,但是一旦这样做了,它中的所有类都应该可用,而不需要进一步包含。更多信息在这里:http://phpmaster.com/packaging-your-apps-with-phar/

  • 使用自动加载机制。 PHP有一个自动加载系统,允许在类被引用时自动加载。这可以使您不必手动包含所需的文件。您仍然需要编写一个自动加载器函数,它包含它找到的文件,并构建您的代码,以便自动加载器可以找到文件,但是您的主代码库应该保持没有太多的包含。点击这里阅读更多信息:http://phpmaster.com/autoloading-and-the-psr-0-standard/

  • 使用操作码缓存,如APC或Opcode。这些工具是PHP扩展(尽管Opcode扩展将在PHP 5.5发布时内建),它们在PHP代码通过PHP解释器运行后将PHP代码保存在内存中。这意味着下次加载相同的代码时,它将运行得更快,因为它不需要再次处理。这不会影响代码中包含/要求的数量,但确实意味着PHP解释器不必重复处理它们。这里有一个Opcode的链接:https://blogs.oracle.com/opal/entry/using_php_5_5_s

  • 使用PHP编译器,如HipHop。这是最极端的情况——只需将整个代码库编译成可执行文件。PHP将不再需要包含任何东西。您可能需要重构代码库以使其可行。点击这里了解HipHop: http://www.hiphop-php.com/wp/

以上大多数选项都可以组合使用,例如,您可以编写一个自动加载器使用的phar库,并使用一个操作码缓存来加速它,所有这些都可以同时进行。

希望对你有帮助。

如果你需要在ajax加载的页面中做db请求,没有办法,你仍然需要你的db php文件,因为这是一个全新的请求。

如果你不需要做db请求,直接不加载db文件