PHP框架或没有(蛋糕PHP)(PHP Framework or not (Cake PHP))

2019-07-31 16:34发布

在大学里,我的最后一年的项目是基于MVC的C#的Web应用程序。

我的PHP是不强,我期待改善我的PHP编程技能,我期待建立使用PHP MySQL的Web应用程序。

现在为什么我提到ASP.NET MVC ??? 嗯,因为我挺喜欢的开发环境,编程和能力的OOP本性计划“正确”。 我也很喜欢编程的MVC方法。

现在的问题是。对于一个比较复杂的Web应用程序,我应该使用一个框架,如蛋糕PHP?

我的特定Web应用程序将执行以下操作:报价引擎,XML,RSS订阅,用户帐户,购物篮,店报价后,查看以前的交易,网上商店管理等...

我希望建立的网站可以接收多达每天4000次点击,将一个WordPress插件内整合。

什么是使用一个框架,而不是仅仅硬编码的优势是什么? 是不是像学习学习一种新的编程语言的框架?

Answer 1:

正如在约十几PHP框架的经验和自我的人评定为少数精通(包括蛋糕),我建议你看看Yii框架 。 它是轻量级的,高效的,写得不错,支持的功能,数额特别巨大,具有很大的和友好的社区,并通过各种手段更好,然后CakePHP的恕我直言。

至于每天4000次命中 - 这是基本上没有什么。 如果你写的很好优化的应用程序(照顾慢的查询,相应地优化数据库,移动交通繁忙的内容CDN最终),一个像样的服务器上,web应用程序可以采取许多倍量。



Answer 2:

最近,我与蛋糕的工作,我不是太深刻的印象。 这不是你的最佳选择。 诚如您可以尝试Yii框架。 它写得很好。 关于CakePHP的,我想我最近写了审查应在细节你所有的问题回答:

快速,短 - 这取决于!

而长答案...

如果您需要快速的网络发展过程,然后是它的确定使用的框架。

如果您需要快速执行的网站,你希望大负荷有很多的数据库调用和复杂的关系数据库的查询,那么答案是NO!

很多人都SOOOO由不同的框架印象深刻,但他们实际上甚至不知道这些框架的代码不会......为了证明我不是只需点击键盘上的,因为我不喜欢某些框架或我只是一个框架憎恨我给你的不是那么糟糕表演CakePHP的一些事实! :)

我喜欢测试和系统崩溃的网络应用程序。 通常,这使我很快乐......这就是我的工作! 这就是为什么我喜欢它!

关于烤箱我们蛋糕的一些信息

我的个人环境:

本地Web服务器:四核的第二代i7-2730QM,16GB的1333MHz,硬盘剂7500rpm没有这件事这么多......,默认的Apache 2.2,PHP 5.3中,MySQL 5,适当的索引数据库。

制作:专用刀片服务器*可扩展的云 - 顶级供应商。 Nginx的,PHP 5.3中,MySQL 5,缓存服务器

*在毫秒或纳秒只是原始PHP负载的网站。

仅供参考我的CakePHP的网站有40多个型号,非常复杂的关系。 索引的MySQL数据库表。 在Firefox与最近的提琴手2作为基准工具的工作。

我最近使用CakePHP构建企业网站。 我能够在所有矿山环境最近与只是基本的默认开始测试从默认的CakePHP安装生成的页面。 我的本地Web服务器上的负载是在生产4.5秒3.9sec,而这仅仅是蛋糕安装后的默认页面?

结果是调整前蛋糕(假设谁烤的第一个蛋糕的人都知道如何正确处理的成分和假设应用程序将跑得快!我对此表示怀疑。)!

主调音UPS:

下面是对我的作品,并进行了测试:缓存:当前CakePHP的2.1支持文件,ApcCache,WINCACHE,XCacheEngine,MemcacheEngine和RedisEngine。 无论你选择哪一个近似的速度增加是从100%到180%。 (我们不使用Cake的缓存选项,可以运行我们自己的高速缓存服务器)在我们的情况下220%! 设置调试0 - 为蛋糕引擎来运行需要生成二级缓存文件夹。 第一个是的/ tmp /缓存/持续性 - 有由蛋糕,当你运行你的应用程序中使用这里有两个不同的文件。

减慢蛋糕代一个是cake_core_file_map。 此文件在您的应用程序商店的各种类。 对于建立文件蛋糕确实在寻找合适的文件逻辑和费时的搜索目录棵树。

第二cachefolder为/ tmp /缓存/模型将这个文件夹包含您的系统包含表架构中的每个模型中的所有文件。

有什么区别时,调试是0? 当调试是1或更大缓存寿命是10秒。 当Debug设置为0的缓存生存期为999天。 用于烘烤蛋糕的近似速度增加为80%至100%。 持久性模型 - 接通“变量$ persistModel = true”会产生在/ tmp /缓存两个新文件/迁延每个模型包括在控制器中。 一个是对象的cahce,另一个是在ClassRegistry模型的缓存。 此缓存只能在文件系统中保存。 约。 从0%的速度增加至200%。 根据您的应用程序和模型的数量。

其他提示和技巧:避免使用$用途,因为使额外的循环和撞击ClassRegistry。 这往往是错误的! Cookie是由默认的加密和CYPHER隐窝方法是很慢的。 如果你不存储任何敏感数据,关闭加密。 0%的性能提升至15%。 使用GZIP压缩无论什么(将最多压缩输出到90%)! 如果你使用任何框架,使用与PHP 5 +建造的版本! 关于CakePHP的载文的比几年前提供一个好得多。 是什么让CakePHP的放缓主要是从开发商不当码使用。 但是,这并不容易开发应用程序,如果你真的不知道蛋糕是如何工作的。

我一直在阅读了很多的一些功能不工作蛋糕意见。 所有的CakePHP中的功能的作品作为要仔细阅读他们的烹饪书说。 一些没有在细节很好的解释或(这就是为什么它不适合初学者),但它不会伤害问! 有时候,某些功能必须在正确的顺序工作中使用,否则您的应用程序会崩溃或将不会返回所期望的结果。 保持模型的思想和不同的类和函数是如何工作的!

看来,人们写了这个代码在不时不知道他们在说什么要么。 例如排序从数据库阵列使用Cake的数组排序的函数,而不是MySQL的分拣能力,只是因为它很酷? 真的吗? 这是写在蛋糕的文档。

哦数据库来讲......我们使用ADODB蛋糕这使事情有点慢了。 但ADODB讨论是另一篇文章。 又一个速度牺牲,但我们总是跨平台的兼容性工作!

整个蛋糕的作品有很多阵列生成并依赖于很多复杂的模型。 其他一些错误,我发现用较慢的函数和方法比其他的代码。 但我很清楚它更容易找到比你自己其他的错误!

在谈到时间的发展,也有可能面临一些事情时使用CakePHP你沉重的发展过程中是不容易做到的,你可能最终花费了很多时间四处想办法。

所以,总体来说,如果我有一个非常复杂的项目,我通常做,我不能很容易地找到或建立所需的功能做复杂的工作在蛋糕或废物几天破坏我的头在墙上,然后我不知道烤蛋糕是值得的! 调整蛋糕后,速度是接近我们的其他应用程序的速度。 但经过在负载测试几天看来,Web应用程序是持股待涨,但几千观众的压力下仍然弯曲。 我传递7.5K独立访问者后很快期待过载!

我要说的是,蛋糕是高级或中级开发者。 如果我只是在我的网络发展职业生涯的开始,我不会用蛋糕。 对于小到中等规模的项目,它的罚款或建筑物管理委员会(它的真棒!)。 对于除非你想花的钱固体量在服务器上喂养你的应用程序出现严重的交通负荷大规模的项目,我不会与任何框架去,只是光秃秃的原始PHP(可能是Smarty的 - 这是表现让)! 请记住,有恒定的硬件和软件的更新和升级,你的应用程序,也取决于这一点。 想象一下,基于一个框架非常复杂的大型应用程序的迁移或调试 - 软件版本,硬件升级等..想想危险因素和你的应用程序的实际支持!

对于大型项目,我会从像WordPress的是,Joomla,Drupal的,等开源平台望而却步......构建可伸缩写得很好的应用程序的最佳方法是建立在你自己的! 你就会知道这样有什么背后! 记得! - 压缩,缓存,存储时,可以在数据库,优化,少用在你的网页设计的图像,避免了复杂的URL重写。 并再次优化! 去通过你的服务器访问和错误日​​志,并再次优化! :)每个优化和加速你的决定将钱还给你,当你开始打游客及以上的4位数字。

在我超过14年的web开发经验,我从我的错误中汲取教训,我知道在何时何地,我需要一个框架。 关于你的项目将节省您大量的时间和金钱比犯错误和学习阅读和项目规划时间有点。 时间就是金钱!

希望这可以帮助别人提高他们的开发时间!

我会继续测试,钳工,后来就在这里发布的更新!

来源:bit.ly/OX3UTo



Answer 3:

好吧,首先,有一个CMS软件像WordPress和像CakePHP中的MVC架构之间的差异。 WordPress是在其本身和全面的软件。 一个框架就是:代码,提供一般应用结构(意思是,传入的请求的处理方式,目录结构,可能用于处理数据等的ORM),您将需要在上面写代码。

框架是不错的,因为他们没有完全形成。 他们打理一切繁琐的,低水平的,你的任务,并允许你写代码,做的东西 。 其缺点是需要学习所有的东西在特定的框架给你。

软件包是不错的,因为他们是准备去开箱,一般有插件的主机,您可以安装添加功能如果香草版本没有你需要的一切。 其缺点是,它往往很难得到像WordPress或任何其他CMS,工作,你究竟如何想,即使插件,需要你在引擎盖下的代码工作。

这是给你找出适合您的需求。

这就是说,如果你打算使用的东西会给你的企业级框架方面的经验,考虑要么Symfony2的或Zend框架 。 Yii的也是一个坚实的建议。



文章来源: PHP Framework or not (Cake PHP)