有很多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/
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass
我正在查看instance_variable_set的文档并看到给出的示例代码是这样做的:obj.instance_variable_set(:@instnc_var,"valuefortheinstancevariable")然后允许您在类的任何实例方法中以@instnc_var的形式访问该变量。我想知道为什么在@instnc_var之前需要一个冒号:。冒号有什么作用? 最佳答案 我的第一直觉是告诉你不要使用instance_variable_set除非你真的知道你用它做什么。它本质上是一种元编程工具或绕过实例变量可见性的黑客攻击
我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我正在尝试用ruby中的gsub函数替换字符串中的某些单词,但有时效果很好,在某些情况下会出现此错误?这种格式有什么问题吗NoMethodError(undefinedmethod`gsub!'fornil:NilClass):模型.rbclassTest"replacethisID1",WAY=>"replacethisID2andID3",DELTA=>"replacethisID4"}end另一个模型.rbclassCheck 最佳答案 啊,我找到了!gsub!是一个非常奇怪的方法。首先,它替换了字符串,所以它实际上修改了
我有一些代码在几个不同的位置之一运行:作为具有调试输出的命令行工具,作为不接受任何输出的更大程序的一部分,以及在Rails环境中。有时我需要根据代码的位置对代码进行细微的更改,我意识到以下样式似乎可行:print"Testingnestedfunctionsdefined\n"CLI=trueifCLIdeftest_printprint"CommandLineVersion\n"endelsedeftest_printprint"ReleaseVersion\n"endendtest_print()这导致:TestingnestedfunctionsdefinedCommandLin
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
状态:我正在构建一个应用程序,其中需要一个可供用户选择颜色的字段,该字段将包含RGB颜色代码字符串。我已经测试了一个看起来很漂亮但效果不佳的。它是“挑剔的颜色”,并托管在此存储库中:https://github.com/Astorsoft/picky-color.在这里我打开一个关于它的一些问题的问题。问题:请建议我在Rails3应用程序中使用一些颜色选择器。 最佳答案 也许页面上的列表jQueryUIDevelopment:ColorPicker为您提供开箱即用的产品。原因是jQuery现在包含在Rails3应用程序中,因此使用基
我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r