0

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

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

我的问题是:我只想加载网站核心(db、urlmanager、define&constants 等)一次,而不是在我使用 ajax 加载的每个页面上加载。

IE:我有这个页面:gallery.php、init.php、albums.php

但是当我在 AJAX 上调用每个($.ajax......album.php)时,我需要执行“require_once ... core.php”

并在每次通话时打开另一个数据库连接。

有解决办法吗?如果没有,那么在 ajax 应用程序中安装 php 的最佳方法是什么?

4

2 回答 2

2

PHP 是一种脚本语言,所以是的,您确实需要在每次页面加载时包含(或要求)所有相关文件。有一些解决方案可以让您更轻松,但它们不会改变基本事实。

可能的解决方案:

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

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

  • 使用操作码缓存,例如 APC 或操作码。这些工具是 PHP 扩展(虽然在 PHP 5.5 发布时将内置 Opcode 扩展),它们在 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 库,并同时使用操作码缓存来加速它。

希望有帮助。

于 2013-04-23T11:43:14.370 回答
0

如果您需要在 ajax 加载页面中执行 db 请求,则无法解决,您仍然需要您的 db php 文件,因为它是一个全新的请求。

如果您不需要执行 db 请求,只需不要加载 db 文件。

于 2013-04-23T11:38:49.977 回答