php - 高级 PHP 设置 - 有选择地包括内置 PHP 函数

标签 php function settings

有很多inbuilt PHP functions .我想知道,在担任软件工程师将近 2 年半之后,我几乎没有使用其中的一小部分。但是所有这些都已定义并且可以与默认的 PHP 安装一起使用。

我在 SO 的某个地方读到 PHP 提供了所有这些内置的东西,但是用像 JAVA 这样的语言做类似的事情需要大量的编码。那是对的吗?我对其他语言的经验不多。

此外,我假设这些函数中的大部分未被任何其他内置函数或任何东西(内部依赖项)使用是否正确?例如。这些功能 pdf_fit_table() , gzopen()仅在 PDF 和 gzip 文件相关的情况下才需要。

如果是这样,那么作为高级程序员,PHP 是否为我们提供了任何选项来根据特定的项目需求或更动态地基于特定的模块来选择性地加载它们?例如仅当我有 PDF 相关任务时才加载 PDF 相关功能。如果可能的话,在什么水平上可以做到?如果在 PHP 安装级别,那么我认为在共享主机的情况下是不可能的。是否有更好的解决方案?

我只是从常识的角度讲,我们根据需要包含包含功能的文件。

它会提升性能吗?

我不太了解PHP的核心库等。所以,请说明一下。

更新:
谢谢解答

@pygorex1 - HipHop 方式是整体优化 PHP。所以,用非常简单的术语来说,如果我是正确的,如果在使用 HipHop 之前运行需要 1 秒,它可能会变成 0.7 秒。但在这两种情况下,那些额外的不必要的定义函数的存在增加了它们的开销(比如在第一种情况下为 0.1 秒,在 HipHop 情况下为 0.07 秒)。如果是这样,那么 HipHop 的目标是其他东西并且没有回答我的问题。但是,您给出的另外两点说所有都必须在编译时完成。因此,这可能意味着如果我使用扩展进行编译,那么每次都会加载该扩展下的功能组。那么可能没有进一步的方法来删除包含?某种 everride?

@Tyler - 我同意可能很难按照我的要求去做,但原因不是你说的那样。找出依赖关系不会那么困难。只是运用常识,我可以说像is_numeric()这样的功能, is_array() , array_walk() , func_get_args()等是非常基本的,可能被很多人调用,但是有很容易区分的组,比如包含例如套接字函数组。 socket_connect()如果没有明确需要,则不需要包括在内。问题可能是它需要在编译时指定,就像 pygorex1 已经回答的那样。

最佳答案

关于任何潜在的性能提升 - 您可能不会注意到它,除非您提供 动态 PHP 页面。这条路以前有人走过-看看HipHop ,Facebook 将 PHP 优化为 C++ 的工具。利用像 APC 和 eAccelerator 这样的字节码缓存和/或重写你的 PHP 代码以使用 memcached 智能缓存将比启用/禁用某些 PHP 函数更能提高 PHP 性能。

话虽如此,有两种主要方法可以减少 PHP 可用函数的数量:

PHP 编译时选项

从源代码编译 PHP 时可用。问题 gzopen() 中提到的函数之一是 zlib 扩展的一部分,必须是 enabled at compile time .有很多built-in compile-time options .

PHP 模块

这些由 PHP 动态加载并由扩展名下的 php.ini 配置文件控制 - 它们在 Windows 上是 .dll 文件,在 Linux 上是 .so 文件。我的开发 php.ini 中的一个片段:

...
extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dblib.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
...

关于php - 高级 PHP 设置 - 有选择地包括内置 PHP 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4433567/

相关文章:

php - COMPOSER : choose the command line php you want to use. 那里什么都没有

c - C 中返回字符串的函数。为什么返回 null?

android - Gradle设置Android项目配置

android - 将 Android 应用程序的语言更改为阿拉伯语时如何在左侧显示复选框?

ios - 本地化具有不同名称的 info.plist 文件?

php - 从 mysql 表 WHERE 字段 ='$array' 中选择?

php - sql 的 order by 子句不适用于与第一个表相关的第二个表

php - 重置 PDO 结果中的数组指针

javascript - 从对象中删除特定键

C++ 如何在包含两个变量的结构中将不同数量的值存储到我的变量中?