Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一个文件生成器中的多个类-具有依赖项检查_Php_Zend Framework - Fatal编程技术网

Php 一个文件生成器中的多个类-具有依赖项检查

Php 一个文件生成器中的多个类-具有依赖项检查,php,zend-framework,Php,Zend Framework,我分析了我的代码,并意识到Zend_Loader::loadClass需要很多时间(每个请求需要100毫秒)。我明白这一点——每节课都要跑,这并不奇怪 我们已经使用了操作码缓存,但我想要更多。我想做的是将经常使用的类合并到一个文件中,并要求在引导中使用该文件-这样所有的类都可以使用,将IO操作最小化-autoloader甚至不会被触发;) 问题:实际上每个请求都需要很多类(前台控制器、路由器、调度程序、屈折因子、控制器摘要、助手代理等)。这些类具有依赖关系—它们的接口或抽象类。我想我可以制作一个

我分析了我的代码,并意识到Zend_Loader::loadClass需要很多时间(每个请求需要100毫秒)。我明白这一点——每节课都要跑,这并不奇怪

我们已经使用了操作码缓存,但我想要更多。我想做的是将经常使用的类合并到一个文件中,并要求在引导中使用该文件-这样所有的类都可以使用,将IO操作最小化-autoloader甚至不会被触发;)

问题:实际上每个请求都需要很多类(前台控制器、路由器、调度程序、屈折因子、控制器摘要、助手代理等)。这些类具有依赖关系—它们的接口或抽象类。我想我可以制作一个自动工具来检查这些依赖关系,这将允许我按正确的顺序将类插入文件中。不幸的是,autoloader没有按要求的顺序加载它们,而是在解析代码中“随它们来”加载(对于Zend_Form_元素:Z_F_Element_Text、Z_F_Element_Xhtml、Z_F_Element等),因此在autoloader中转储类名是不可能的:(


问题:您是否使用/是否有一种工具对我的情况有帮助?如果我对如何实现有任何抽象的想法,我很乐意自己实现它。

我能给您的最好答案是我读到的一篇文章,它确实对自动加载技术性能细节感到失望


通过使用“包含文件缓存”,您至少可以提高Zend_Loader_PluginLoader加载的类的性能-


我想您可以将这种缓存方式扩展到Zend_加载程序,但我不确定这是否会有所帮助或使事情变得更糟。

您可以手动执行。请看以下博文:此预加载脚本:

自ZF2自动工具存在以来。感谢EvanDotPro:

我还将其粗略移植到ZF1(请先测试-可能不是100%工作,但在我的情况下工作):


即使它没有回答我的问题(如何将类合并到一个文件中)它仍然非常有用。谢谢。你也在使用文件缓存吗?你在使用APC吗?我知道这个选项。它实际上可能有点帮助,但这不是我想要的。它的文件中充满了incude“filename.php”。它在IO操作方面没有太大帮助。它是一样的,只是一次加载它们。但是,仍然感谢你指出这一点。链接的“预加载脚本”正是我想要的。嗯,不完全是,但主要是。这个问题的主要问题是,是否有可能以自动化的方式执行此操作。我知道我可以“手动”执行此操作,但这不是我想要的,只要我将来可能添加一些类,并且我必须再次重建此预加载脚本:(我认为您的类不会经常更改。我只会制作一个CLI脚本,以自动合并平面文本文件中的文件列表。