关于Yaf的一些说明
作者: Laruence( ) 本文地址: http://www.laruence.com/2012/08/31/2742.html 转载请注明出处 Yaf 是我在俩年前写的一个PHP扩展的MVC框架. 开发Yaf的目的是为了解决使用框架带来的性能下降的经典矛盾. 最初要感谢百度的同仁们的信任, 以及当时各位老大的支持
- 作者: Laruence(
)
- 本文地址: http://www.laruence.com/2012/08/31/2742.html
- 转载请注明出处
Yaf 是我在俩年前写的一个PHP扩展的MVC框架. 开发Yaf的目的是为了解决使用框架带来的性能下降的经典矛盾.
最初要感谢百度的同仁们的信任, 以及当时各位老大的支持, 容许也敢于让我”试错”, 才让Yaf顺利的度过了”没人敢用”的阶段, 大量的百度的新的产品基于Yaf开发, 让Yaf的稳定性得到了充分的验证, 也普遍的提高了PHP应用的执行效率.
而现在, Yaf的高性能又一次在微博的应用中得到了证明, 通过迁移框架到Yaf, 和一些其他优化手段, 我们成功的让新版微博的TPS提高了76%之多, 响应时间下降了近一半.
然而, 我也看到, 还有不少同学对Yaf有疑虑, 甚至有质疑, 有人认为”使用C写框架? 那不是回退到写CGI的时代了?”, 于是我想我有必要写一篇文章, 详细介绍下我对Yaf的一些理解.
首先, Yaf是一个框架, 那么大家对框架有什么感觉? 比如大家在平时使用Yii, Zend Framework的时候, 会去修改它么? 当你的一个业务基于某个框架开发完成以后, 你觉得你以后还会去修改框架代码么?
这就是Yaf之所以可以做成框架的一个前提条件, 那就是框架是不易变的, 一般是不需要维护的, 比如在百度使用的Yaf, 相当于Yaf 2.1.0, 虽然从2.1.0 到现在的2.1.18, 新增了一些特性, 修复了一些bug, 但是只要你的应用基于此框架开发完成了, 稳定运行了, 那你并不是一定要把框架升级到最新版.
第二, 大家在使用其他框架的时候, 如果要调试, 会需要去读框架代码, 并且通过在框架代码中打信息来调试么? 我想说, 这样的情况, 很少很少, 是的, 当一个开发者对某个框架特别熟悉的时候, 他清楚的知道这些框架的流程, 所以可能通过这样的方式来调试, 然而这不是必须的.
Yaf因为是扩展, 所以特别注意开发/调试的便利性, 它提供了插件机制, 提供了丰富的debug信息, 并且专门为命令行下的调试做了特别优化, 尽可能的在出现错误的时候, 给予更多的错误原因. 所以, 你几乎完全不需要了解框架的具体实现, 就能方便的调试.
还有一些同学对Yaf的实现表示担忧, 害怕引入一个扩展, 会造成一些其他问题.
Yaf的实现, 都是基于PHP的内核API, 你可以理解为Yaf的执行层面, 和你的PHP代码执行层面没有不同, 并且充分的注意了避免对PHP带来侵入性, 他遵守所有的安全限制, 所以在PHP内载入Yaf, 并不会带来什么问题(当然, 除非你的应用中, 有和Yaf提供的类同名的类).
还有一些同学, 担心, 万一Yaf出了bug怎么办? 毕竟扩展的框架, 要维护比较困难.
首先, Yaf有bug么? 肯定有, 就好比PHP, 它也存在很多Bug, 但是只要你触及不到, 那么你就不会触及到, 不存在开发的时候没问题, 跑的时候有问题.
另外, 对于Yaf的问题, 我基本上能做到快速响应, 这点现在的大量的Yaf用户应该能证明吧? 如果真正的是Yaf的bug, 我一定会立即修复. 提供Patch. 并且, 除我之外, 也有更多的人对Yaf的实现开始了解, 我相信以后Yaf会有更多的维护者.
另外, 还有不少同学问, 为什么Yaf没有ORM, 这里有俩方面的考虑:
首先, Yaf并不是万能的, 它只是解决了应用中, 最基本的一个问题, 就是框架带来的额外的性能开销, 然而这本部分的开销和你的应用实际的开销相比, 往往是很小的.
但是, Yaf却代表着一种精神, 就是追求简单, 追求高效, 追求:”简单可依赖”, 所以Yaf专注于实现最核心的功能, 提供最稳定的实现.
相比ORM, 如果要实现的很方便, 那必然会很复杂, 在当时的情况下, 实现ORM有可能会引入不稳定性
第二, 也是最重要的一点是PHP已经提供了对DB的一个轻度封装的PDO, 我认为直接使用PDO, 会更加简单, 更加高效, 我不希望提供一个复杂的ORM包装, 鼓励大家去抛弃简单的PDO而使用ORM. 所以, 最初的时候, Yaf并不包含ORM.
诚然, ORM可以提高开发效率, 尤其对于一些简单应用, 所以我想在后续的Yaf的版本中, 会考虑加入ORM, 但是那也绝对会是一个简单的ORM, 类似于Yaf的内建视图引擎: Yaf_View_Simple, 简单可依赖.
当然, 因为Yaf是扩展, 而大部分的虚拟主机提供商是不容许我们自己安装扩展的, 这也就限制了Yaf的应用面, 在这点上, 我想我要特别感谢SAE/BAE的同学们, 在不久的将来, SAE/BAE都会支持Yaf, 让更多的个人开发者, 也能使用Yaf.
Yaf相比其他的框架, 目前还是一个很年轻的东西, 虽然有一大堆热心的同学(大门, 黑馒头, 烧鸡, 等等)在和我一起努力去丰富文档, 提供实例, 但Yaf的相关辅助还却是不如其他框架丰富.
所以, Yaf对于完全没有用过框架的同学来说, 入门门槛会比较高一些, 但如果你已经使用过其他框架, 那么接受Yaf, 将会比你想象的简单的多.
最后, 我并不是说, 大家都需要使用更高性能的框架, 我只是希望Yaf能给大家提供了一条路, 给大家提供多一种选择而已.
“Yaf只是最快的框架, 却不是最完美的框架.”
我会让持续的让他越来越完美. 我也欢迎你, 和我一起, 让他变的更完美.
在Github上的Yaf源代码: https://github.com/laruence/php-yaf
在Pecl的Yaf的发布包: http://pecl.php.net/yaf
Comments
- 2012/08/31, 飞晏 writes: 我在公司的最后一个项目确定使用yaf了,不过还不确定我们的架构师会不会使用PDO。一般我们都习惯使用ORM去做,因为实在是太忙了...
- 2012/08/31, 雪候鸟 writes: @飞晏 那你可以使用第三方的ORM库, 只要它符合自动加载规则就行. :)
- 2012/08/31, 老黎 writes: 简单可依赖.这话深深打动了我呐...
- 2012/08/31, syber writes: 鸟哥,这篇blog我不水了!
- 2012/08/31, pangee writes: 鸟哥,当年“才让Yaf顺利的度过了”没人敢用”的阶段, 大量的百度的新的产品基于Yaf开发”这个阶段,是否出现过YAF问题一大堆的情况?。。。
- 2012/08/31, 雪候鸟 writes: @pangee 呵呵, 没有, :) 我的代码还是值得你信任的
- 2012/08/31, pangee writes: "Yaf却代表着一种精神, 就是追求简单, 追求高效, 追求:”简单可依赖”" 赞 ~
- 2012/08/31, ruckfull writes: 简单,可靠,看着很动心
- 2012/08/31, 奇言妙事-文学奇谈小小说阅读xlinblog.sinaapp.com » 关于Yaf的一些说明 writes: [...] 本文地址: http://www.laruence.com/2012/08/31/2742.html [...]
- 2012/08/31, Demon writes: 爱yaf,爱wife。yaf你值得拥有。
- 2012/09/01, PHP10086博客网 writes: 是不是考虑 研究一下鸟哥的yaf 嘿嘿,鸟哥真给力--简单可以依赖!
- 2012/09/01, demo writes: 必须要用。
- 2012/09/02, 关于Yaf的一些说明树林/咖啡 成都专业php网站制作 | 树林/咖啡 成都专业php网站制作 writes: [...] 风雪之隅 ? PHP应用 Posted in: php / Tagged: 关于Yaf的一些说明 [...]
- 2012/09/04, 疯狂的火星人 writes: 可以先试试,不过windows 下配置安装不是很方便呀,这样在windows 下开发的童鞋,就有点麻烦了!!
- 2012/09/04, erain writes: Hi鸟哥,请问一下什么时候Yaf才会支持PHP 5.4?我们公司马上要开展的一个PHP项目我很想基于Yaf来做,但是我们生产环境上的PHP都已经升级到5.4了……
- 2012/09/04, 雪候鸟 writes: @erain 一直支持5.4, 只不过你不能pecl install, 你下载下来自己编译就行...
- 2012/09/05, dennis writes: 建议鸟哥出本书。
- 2012/09/05, hipop writes: 我们正在用yaf来部分代替zendframework,实践证明yaf无疑是php发展过程中一个伟大的尝试,希望yaf发展壮大!
- 2012/09/09, 小悠 writes: 感觉这样会不会有点问题? 有没有想过将PHP的数据库这部分用C来写
- 2012/09/16, Ray writes: 期待SAE的YAF
- 2012/09/18, 奇言妙事-文学奇谈小小说阅读xlinblog.sinaapp.com » Yaf and Phalcon, which is faster? writes: [...] 关于Yaf的一些说明 [...]
- 2012/10/10, anonymous writes: 有意思,值得关注
- 2012/10/21, wake writes: Laruence 您好,想請教一個關於 Yaf route 的問題。我希望能在 route rules 裡動態指定對應處理的 controller/action,例如透過 Yaf_Route_Regex 規則捕捉到了兩個變數,則就以這兩個變數作為 controller 和 action。 我目前是透過 Plugin 的方式做攔截和轉譯,想請問有沒有比較簡單的方式 (直接透過 route) 可以作到呢?
- 2012/11/12, 刘纪君 writes: 现在我已经把zendframwork下面的应用转接到yaf下面很简单的转化,效率非常的高。
- 2012/11/15, Sam writes: 求教,某些单纯的REST,纯API型的应用。如何让Controller不需要去加载视图。。
- 2012/11/15, 安卓DIY writes: 安卓DIY(www.anzhuodiy.com)是用Yii实现的,研究了一下Yaf,确实很简单,看能不能迁到这上面。
- 2012/12/06, 关于PHP的编译和执行分离 | 5iphp writes: [...] 关于Yaf的一些说明 [...]
- 2013/04/01, peter writes: 下一个项目可以尝试用一下,称研究一下。
- 2013/04/30, 关于Yaf的一些说明 | 午后小憩 writes: [...] 本文地址: http://www.laruence.com/2012/08/31/2742.html [...]
- 2013/05/01, 关于PHP的编译和执行分离 | 午后小憩 writes: [...] 关于Yaf的一些说明 [...]
- 2013/05/12, weijiao writes: Fatal error: Uncaught exception 'Yaf_Exception_LoadFailed_Action' with message 'There is no method indexAction in IndexController' in /data/www/yaf/index.php:4 Stack trace: #0 /data/www/yaf/index.php(4): Yaf_Application->run() #1 {main} thrown in /data/www/yaf/index.php on line 4 这是我在nginx运行yaf之后出现的错误,可以保证的是代码是没有错的。
- 2013/05/12, weijiao writes: 希望开发者能尽快回复,我只是运行hello world的简单代码,但是nginx就是出现这个问题,第一次运行的时候是出现结果了但是不断刷新就出错啦!!求救!!!!!
- 2013/05/12, laruence writes: @weijiao 如果你是使用Yaf新版, 我可以保证你的代码或者配置是有问题的...... anyway, 这里有个Yaf的qq群, 你可以加入进来提问: 5134185
- 2013/05/13, weijiao writes: 那个群我加了,不过我早已经把问题贴出去啦,可是没有人能真正帮我解决的,哎,怎么办!
- 2013/09/30, 上海天气预报 writes: 最近很少用框架
- 2013/12/07, lihi writes: getControllerName(); /** * Use access controller is unecessary for APIs */ if (in_array(strtolower($controller), array( 'api', ))) { return TRUE; } if (Yaf_Session::getInstance()->has("login")) { return TRUE; } /* Use access check failed, need to login */ $response->redirect("http://yourdomain.com/login/"); return FALSE; } ?> $response->redirect("http://yourdomain.com/login/"); 我怎么没找到redirect这个方法呢?
- 2013/12/20, WildCat writes: sae到现在没实现yaf
- 2014/08/22, 上官 writes: 鸟哥 公司决定用了yaf框架 项目中需要实现widget的功能 求思路
- 2014/09/16, 133-inch macbook pro, apple a1097, macbook pro, apple macbook pro, superdrive mac g5, 133-inch laptop,tablets for business, apple ipad, iphone covers deals, iphone 4 accessories, iphone covers coupon codes writes: The supplementary information density and most up-to-date Seagate technologies need to afford it the edge above prior Professional-types. That benefits the aluminum along with instruments glaas enclosure. My homepage ... 133-inch macbook pro, apple a1097, macbook pro, apple macbook pro, superdrive mac g5, 133-inch laptop,tablets for business, apple ipad, iphone covers deals, iphone 4 accessories, iphone covers coupon codes
- 2014/09/21, get into bondage writes: Unfortunately, many managers who really want to do the right thing just don't recognize it when it happens, and they end up handling grievances or, worse, lawsuits. Let's take a look on how you can pick lingerie for your special person. Try a babydoll with a cut-away front in a misty blue color. Also visit my site - get into bondage
- 2014/12/13, plus size trendy clothing writes: Hi to every body, it's my first pay a visit of this webpage; this webpage consists of remarkable and really excellent information for readers.
Copyright © 2010 风雪之隅 版权所有, 转载务必注明. 该Feed只供个人使用, 禁止未注明的转载或商业应用. 非法应用的, 一切法律后果自负. 如有问题, 可发E-mail至my at laruence.com.(Digital Fingerprint: 73540ba0a1738d7d07d4b6038d5615e2)

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Windows 11에서 MAC 주소를 어디서 찾을 수 있는지, 어떻게 변경하는지 궁금하지만 아직 방법을 모르시나요? IP 주소를 숨길 수 있으므로 이 문서에서는 Windows 11의 장치 속성에서 사용자 지정 MAC 주소를 설정하는 간단한 단계를 제공합니다. MAC 주소를 변경할 수 있나요? Windows 컴퓨터의 기본 MAC 주소를 변경할 수 있지만 장치 제조업체에서는 예상치 못한 문제가 발생할 수 있으므로 변경하지 않는 것이 좋습니다. NIC(네트워크 인터페이스 컨트롤러)에서는 MAC 주소가 하드코딩되어 변경할 수 없지만 일부 드라이버에서는 이것이 가능할 수도 있습니다. 또한 사용자는 타사 프로그램을 사용하여 MAC 주소를 변경할 수도 있습니다.

때로는 단일 LAN 카드에 여러 주소를 할당해야 하는 경우도 있습니다. 예를 들어 고유한 IP 주소로 여러 웹사이트를 실행해야 하거나 애플리케이션을 다른 IP 주소에 바인딩해야 하는 경우 등이 있습니다. 단일 네트워크 인터페이스 카드나 LAN 카드에 여러 주소를 할당하는 방법을 생각하고 있다면 이 문서가 도움이 될 것입니다. 아래 단계를 끝까지 따르시면 완료됩니다. 그럼 시작해 볼까요! 하나의 LAN 카드에 여러 IP 주소 할당 1단계: Windows+R 키를 함께 사용하여 실행 프롬프트를 열고 ncpa.cpl을 입력한 다음 Enter 키를 눌러 네트워크 연결 창을 엽니다. 2단계: 네트워크 어댑터 이더넷 또는 WiFi 옵션을 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭합니다. 3단계: 속성 창에서

ARP(주소 확인 프로토콜)는 MAC 주소를 IP 주소로 매핑하는 데 사용됩니다. 네트워크의 모든 호스트에는 자체 IP 주소가 있지만 NIC(네트워크 인터페이스 카드)에는 IP 주소가 아닌 MAC 주소가 있습니다. ARP는 IP 주소를 MAC 주소와 연결하는 데 사용되는 프로토콜입니다. 이러한 모든 항목은 수집되어 ARP 캐시에 저장됩니다. 매핑된 주소는 캐시에 저장되며 일반적으로 아무런 해를 끼치지 않습니다. 그러나 항목이 올바르지 않거나 ARP 캐시가 손상된 경우 연결 문제, 로드 문제 또는 오류가 발생할 수 있습니다. 따라서 ARP 캐시를 지우고 오류를 수정해야 합니다. 이 기사에서는 ARP 캐시를 지우는 방법에 대한 다양한 방법을 살펴보겠습니다. 방법

인터넷에 연결된 모든 장치에는 물리적 주소와 인터넷 주소라는 두 가지 유형의 주소가 있습니다. 인터넷 주소는 전역적으로 장치를 찾는 반면, 물리적 주소는 로컬 네트워크에 연결된 특정 장치를 식별하는 데 도움이 됩니다. 이 물리적 주소를 기술적으로는 MAC 주소라고 하며, 귀하의 iPhone에 MAC 주소가 있는지 궁금하시다면, 그렇습니다. 모든 휴대폰(iPhone 포함)에는 고유한 MAC 주소가 있습니다. MAC 주소란 무엇입니까? 미디어 액세스 제어(MAC) 주소는 동일한 네트워크에 연결된 다른 장치에서 귀하의 장치를 식별하는 데 사용되는 고유한 표시기입니다. 인터넷에 연결할 수 있는 장치가 있으면 MAC 주소가 등록됩니다. 이 주소의 소유자는 다음과 같습니다.

Windows 11에서 보조 IP 주소를 할당해야 하는 이유는 무엇입니까? 이제 가장 중요한 질문에 도달했습니다. Windows 11에서 보조 IP 주소를 하나 이상 할당해야 하는 이유는 무엇입니까? 기본 IP 주소를 가진 장치가 있고 다른 장치를 사용하고 싶다면 보조 장치를 추가해야 할 수도 있습니다. 이 외에도 다양한 SSL 웹사이트를 호스팅하는데도 사용됩니다. 짧은 시간에 많은 양의 이메일을 보내야 하는 경우에는 특정 시간 내에 하나의 IP 주소에서 보낼 수 있는 양에 제한이 있으므로 여러 개의 IP 주소를 얻는 것이 도움이 될 수 있습니다. 또한 일부 사용자는 스팸 필터에 의해 블랙리스트에 오르지 않도록 설정했습니다. 게다가 보조 추가

Apple의 공식 A/S 전화번호: Apple의 24시간 서비스 센터 전화번호: 400-666-8800. Apple 휴대폰의 애프터 서비스 전화번호는 400-666-8800입니다. -627-2273. Apple의 고객 서비스 수동 서비스 핫라인은 판매 후 지원을 위한 400-627-2273입니다. 온라인 상점의 경우 400-666-8800이며 유일한 공식 Apple 전화 번호는 400-666-8800입니다. Apple의 고객 서비스 핫라인은 400-666-8800입니다. 이 번호로 전화하여 Apple 제품의 하드웨어, 소프트웨어 및 타사 액세서리에 대해 문의할 수 있습니다. Apple의 수동 고객 서비스는 24시간 서비스를 제공하지 않습니다. 서비스 시간은 오전 9시부터 오후 9시입니다(일요일은 오전 9시부터 오후 9시까지입니다).

Word의 경우 모든 것을 일반 텍스트로 작성할 수 있거나 작성할 필요가 없습니다. 긴 설명 텍스트로 모든 것을 적으면 Word 문서가 지루하고 혼란스러울 수 있습니다. 물론 댓글 기능은 옵션입니다. 하지만 주석을 추가하는 것만으로도 문서가 너무 투박하고 무거워 보일 수 있습니다. 하지만 짧은 설명이 필요한 텍스트 위로 마우스를 가져가면 표시하려는 텍스트와 함께 그 위에 작은 상자가 나타나도록 하려면 어떻게 해야 할까요? 글쎄요, 이 문장을 스크린팁이라고 부를 수 있겠네요. 문서에 화면 설명을 삽입한 후 추가한 설명 텍스트를 보고 싶을 때마다 화면 설명이 삽입된 텍스트나 줄 위에 마우스를 올리면 됩니다. 이 문서에서는 동일한 목적을 달성하는 데 사용할 수 있는 두 가지 방법을 나열합니다. 따르다

1. 메이투안 주소는 어디서 변경할 수 있나요? Meituan 주소 수정 튜토리얼! 방법 (1) 1. 메이투안 마이페이지에 접속 후 설정을 클릭하세요. 2. 개인정보를 선택하세요. 3. 배송지 주소를 클릭하세요. 4. 마지막으로 수정하려는 주소를 선택하고 주소 오른쪽에 있는 펜 아이콘을 클릭한 후 수정하세요. 방법 (2) 1. 메이투안 앱 홈페이지에서 테이크아웃을 클릭한 후, 입력 후 추가 기능을 클릭합니다. 2. 더보기 인터페이스에서 주소 관리를 클릭하세요. 3. 내 배송 주소 인터페이스에서 편집을 선택합니다. 4. 필요에 따라 하나씩 수정하고 마지막으로 클릭하여 주소를 저장하세요.
