PHP 프레임워크 여부(Cake PHP)
대학에서 저의 마지막 학년 프로젝트는 MVC 기반의 c# 웹 어플리케이션이었습니다.
내 PHP는 강하지 않고 PHP의 프로그래밍 기술을 향상시키고 PHP mysql을 사용하여 웹 애플리케이션을 구축하려고 합니다.
왜 ASP를 언급했을까요?NET MVC?--개발 환경, 프로그래밍의 OOP 특성, 그리고 '적절하게' 프로그래밍하는 능력이 상당히 마음에 들었기 때문입니다.나는 또한 MVC 방식의 프로그래밍을 좋아했다.
이제 제 질문은..비교적 복잡한 웹 어플리케이션의 경우 Cake PHP와 같은 프레임워크를 사용해야 합니까?
특정 웹 응용 프로그램에서 다음 작업을 수행합니다.견적 엔진, XML, RSS 피드, 사용자 계정, 쇼핑 바구니, 나중에 사용할 견적 저장, 이전 거래 검토, 온라인 스토어 관리 등...
구축하려는 사이트는 하루에 최대 4000개의 조회수를 수신할 수 있으며 워드프레스 플러그인으로 통합됩니다.
단순한 하드 코딩과 달리 프레임워크를 사용하면 어떤 이점이 있습니까?틀을 배우는 것은 새로운 프로그래밍 언어를 배우는 것과 같지 않나요?
최근에 나는 케이크와 함께 일했는데 별로 감명받지 못했다.그건 최선의 선택이 아니야조언대로 Yii Framework를 사용해 보십시오.아주 잘 쓰여져 있어요.케이크에 대해서PHP 제가 최근에 쓴 리뷰는 당신의 모든 질문에 대한 자세한 답변이 될 것이라고 생각합니다.
빠르고 짧게 - 상황에 따라 다르죠!
그리고 긴 대답은...
빠른 웹 개발 프로세스가 필요한 경우 프레임워크를 사용하는 것이 좋습니다.
고속의 Web 사이트를 필요로 하고, 대량의 데이타베이스 콜과 복잡한 관계형 데이타베이스 쿼리로 대량의 부하를 상정하고 있는 경우는, 「아니오」라고 대답합니다.
많은 사람들이 서로 다른 프레임워크에 깊은 인상을 받고 있지만, 실제로 이러한 프레임워크의 코드가 무엇을 하는지조차 모르고 있습니다.그리고 단순히 키보드를 클릭하는 것이 아니라는 것을 증명하기 위해 저는 특정 프레임워크를 좋아하지 않거나 단순히 프레임워크를 싫어하는 사람일 뿐이라는 것을 증명하기 위해 CakePHP의 성능이 나쁘지 않다는 몇 가지 사실을 알려드리겠습니다. :)
저는 웹 앱을 테스트하고 크래시하는 것을 좋아합니다.보통 이게 내 하루를...그게 내 일이야!그래서 너무 좋아!
우리 케이크의 오븐에 대한 정보
개인 환경:
로컬 웹 서버: 쿼드코어 2세대 i7-2730QM, 16GB 1333MHz, 7500rpm hd는 그다지 중요하지 않습니다.기본 Apache 2.2, PHP 5.3, MySQL 5는 적절한 인덱스 데이터베이스입니다.
실가동:전용 블레이드 서버 *확장 가능한 클라우드 - 최상위 프로바이더Nginx, PHP 5.3, MySQL 5, 캐싱 서버
* raw PHP만 있는 웹사이트는 밀리초 또는 나노초 단위로 로딩됩니다.
Just FYI my cakePHP 웹사이트에는 40개 이상의 모델이 있으며 매우 복잡한 관계가 있습니다.MySQL 데이터베이스 테이블을 인덱싱했습니다.최신 Fiddler 2를 벤치마크 도구로 사용하여 Firefox에서 작업합니다.
저는 최근에 기업 웹사이트 구축에 Cake PHP를 사용하고 있었습니다.최근 모든 광산 환경에서 기본 케이크에서 기본 기본 생성 페이지부터 테스트 할 수 있었습니다.PHP 설치내 로컬 웹 서버 로드는 프로덕션 4.5초에서 3.9초인데, 이것은 Cake 설치 후 기본 페이지일 뿐입니다?!
결과는 케이크를 튜닝하기 전(최초 케이크를 굽는 사람이 재료를 제대로 다룰 줄 알고 앱이 빨리 실행된다고 가정한다면!)입니다.
마스터 튜닝:
다음과 같이 기능하고 테스트한 내용을 소개합니다.캐싱:현재의 케이크PHP 2.1은 File, ApcCache, WinCache, XCacheEngine, MemcacheEngine 및 RedisEngine을 지원합니다.어느 쪽을 선택하든 대략적인 속도 상승률은 100%에서 180%입니다.(Cake의 캐싱 옵션을 사용하지 않고 자체 캐싱 서버를 실행합니다) 220%의 경우!디버깅을 0으로 설정 - Cake 엔진을 실행하려면 2개의 캐시 폴더를 생성해야 합니다.첫 번째는 /tmp/cache/persistent입니다.Cake는 앱을 실행할 때 두 개의 다른 파일을 사용합니다.
Cake 생성 속도가 느려지는 것은 cake_core_file_map입니다.이 파일은 다양한 클래스를 앱에 저장합니다.파일을 작성하기 위해 Cake는 논리적이고 시간이 많이 걸리는 디렉토리 트리를 검색하여 올바른 파일을 찾습니다.
두 번째 캐시 폴더는 /tmp/cache/models입니다.이 폴더에는 시스템이 테이블 스키마를 포함하는 모든 모델의 모든 파일이 포함됩니다.
디버깅이 0일 때의 차이점은 무엇입니까?디버깅이 1 이상일 경우 캐시 라이프 타임은 10초입니다.디버깅을 0으로 설정하면 캐시 지속 시간은 999일입니다.케이크를 굽는 속도가 대략 80%에서 100%까지 빨라집니다.영구 모델 - "var $persistModel = true"를 켜면 컨트롤러에 포함된 각 모델에 대해 /tmp/cache/consistent에 두 개의 새 파일이 생성됩니다.하나는 오브젝트 캐시이고 다른 하나는 ClassRegistry 모델 캐시입니다.이 캐시는 파일 시스템에만 저장할 수 있습니다.약 0%에서 200%로 속도가 증가합니다.사용하시는 앱과 모델 수에 따라 다릅니다.
기타 힌트 및 요령:$uses는 사용하지 마십시오.따라서 추가 루프가 생성되어 ClassRegistry에 히트하기 때문입니다.이는 종종 잘못된 것입니다! 쿠키는 기본적으로 암호화되어 있으며 암호 해독 방식은 매우 느립니다.중요한 데이터를 저장하지 않는 경우 암호화를 해제합니다.0~15%의 퍼포먼스 향상어떤 경우에도 GZIP 압축을 사용합니다(출력을 최대 90%까지 압축합니다).프레임워크를 사용하는 경우 PHP 5+로 빌드된 버전을 사용하십시오.케이크에 관한 문서PHP는 몇 년 전에 제공된 것보다 훨씬 더 좋습니다.케이크의 특징PHP의 느린 속도는 대부분 개발자의 부적절한 코드 사용입니다.하지만 케이크가 어떻게 작동하는지 잘 모르면 앱을 개발하는 것은 쉽지 않습니다.
요즘 케이크가 안 된다는 댓글 많이 봤어요.케이크의 모든 기능PHP는 요리책에 기재되어 있는 대로 동작하므로 주의 깊게 읽어 주십시오.잘 설명되지 않거나 상세하게 설명되지 않은 것도 있지만(그래서 초보자를 위한 것은 아니지만) 물어보는 것도 나쁘지 않다!경우에 따라서는, 적절한 순서로 특정의 기능을 사용할 필요가 있는 경우가 있습니다.그렇지 않으면 앱이 크래쉬 하거나 원하는 결과를 반환하지 않습니다.모델 및 다양한 클래스 및 기능의 작동 방식을 염두에 두십시오.
사람들이 가끔 이 코드를 썼던 것 같아 무슨 말인지도 모르는 것 같아예를 들어 MySQL 정렬 기능 대신 Cake의 배열 정렬 기능을 사용하여 데이터베이스에서 배열 정렬을 하는 것이 좋습니다.진짜로?그리고 이것은 케이크 문서에 쓰여져 있었다.
아, 데이터베이스 얘기가 나와서 말인데...케익과 함께 ADODB를 사용하고 있기 때문에 조금 느려지고 있습니다.그러나 ADODB에 대한 논의는 다른 기사를 위한 것이다.또 하나의 속도 희생이지만 플랫폼 간 호환성을 위해 항상 노력하고 있습니다.
전체 케이크는 많은 어레이에서 작동하며 많은 복잡한 모델을 생성 및 사용합니다.코드 내의 다른 기능 및 메서드보다 느린 사용 오류도 발견되었습니다.하지만 네 실수보다 다른 사람의 실수를 찾는 게 더 쉽다는 건 잘 알고 있어!
시간 개발에 대해 말하자면, Cake를 사용한 무거운 개발 과정에서 직면할 수 있는 몇 가지 사항이 있습니다.PHP는 실행이 쉽지 않고 결국 방법을 찾는 데 많은 시간을 할애할 수 있습니다.
그래서 전반적으로 제가 보통 하는 매우 복잡한 프로젝트가 있는데 케이크에서 복잡한 작업을 하기 위해 필요한 기능을 쉽게 찾거나 만들 수 없거나 벽에 머리를 박으며 며칠을 낭비한다면 케이크를 구울 가치가 있는지 모르겠습니다.Cake를 튜닝한 후 속도는 다른 앱의 속도에 가까웠습니다.그러나 부하 테스트에 들어간 지 며칠이 지나자 웹 앱은 버티고 있지만 여전히 수천 명의 방문자들의 압력에 굴복하고 있는 것으로 보인다.750,000명의 유니크한 방문자를 돌파한 직후에 과부하가 예상됩니다!
케이크는 상급 개발자나 중급 개발자를 위한 것이라고 생각합니다.만약 내가 웹 개발의 시작 단계였다면, 나는 케이크를 사용하지 않았을 것이다.중소규모 프로젝트나 관리 협의회 구축(최고!)에도 적합합니다.서버에 많은 비용을 들여 앱을 공급하고 싶지 않다면 트래픽 부하가 큰 대규모 프로젝트라면 어떤 프레임워크도 사용하지 않고 그냥 raw PHP(퍼포먼스를 위해 만들어진 Smarty일 수 있음)를 사용합니다.하드웨어 및 소프트웨어 업데이트와 업그레이드가 지속적으로 이루어지고 있으며 앱도 이에 의존합니다.소프트웨어 버전 관리, 하드웨어 업그레이드 등의 프레임워크를 기반으로 한 매우 복잡한 대규모 앱의 이행 또는 디버깅을 상상해 보십시오.위험 요소 및 앱의 실제 지원에 대해 생각해 보십시오!
대규모 프로젝트에서는 Wordpress, Joomla, Drupal 등의 오픈 소스 플랫폼을 피하고 싶습니다.확장성이 뛰어난 어플리케이션을 만드는 가장 좋은 방법은 스스로 만드는 것입니다!그래야 뒤에 뭐가 있는지 알 수 있어!주의! - 가능한 경우 압축, 캐시, 데이터베이스에 저장, 최적화, 웹 디자인 이미지 사용 감소, 복잡한 URL 재작성 방지다시 최적화!서버 액세스 로그와 에러 로그를 참조해, 다시 최적화!:) 4 자리수의 방문자가 되기 시작하면, 모든 최적화와 스피드를 얻을 수 있습니다.
14년 이상의 웹 개발 경험을 통해 저는 실수를 통해 배웠습니다.또, 프레임워크가 필요한 시기와 장소를 알고 있습니다.프로젝트에 대한 약간의 읽기 및 프로젝트 계획 시간은 실수나 학습보다 훨씬 많은 시간과 비용을 절약할 수 있습니다.시간은 돈이다!
개발 시간을 단축하는 데 도움이 되길 바랍니다!
테스트와 벤치를 계속하여 업데이트 내용을 나중에 여기에 게시하겠습니다.
출처 : bit.ly/OX3UTo
약 12개의 php 프레임워크에 경험이 있고, 몇 개(Cake 포함)에 능숙하다고 스스로 평가한 사람으로서 Yii Framework에 대해 검토해 보시기 바랍니다.가볍고, 효율적이며, 잘 쓰여져 있으며, 많은 기능을 지원하며, 크고 친근한 커뮤니티를 가지고 있으며, 케이크보다 훨씬 우수합니다.PHP imho.
하루에 조회수가 4000회까지 올라간다는 것은 기본적으로 아무 것도 아닙니다.제대로 최적화된 애플리케이션(느린 쿼리 처리, 그에 따라 DB 최적화, 결국 무거운 트래픽 콘텐츠 CDN으로 이동)을 적절한 서버에 작성하면 웹 앱이 그 몇 배의 양을 차지할 수 있습니다.
우선 WordPress와 같은 CMS 소프트웨어 패키지와 CakePHP와 같은 MVC 프레임워크 사이에는 차이가 있습니다.WordPress는 그 자체로 완전한 소프트웨어이다.프레임워크는 코드 작성에 필요한 일반적인 애플리케이션 구조(즉, 수신 요청 처리 방법, 디렉토리 구조, 데이터 처리용 ORM 등)를 제공하는 코드입니다.
틀은 완전히 형성되지 않았기 때문에 좋습니다.그들은 당신을 위해 모든 지루하고 낮은 수준의 작업을 처리해주고 당신이 일을 하는 코드를 쓸 수 있게 해줍니다.단점은 특정 프레임워크가 제공하는 모든 것을 배워야 한다는 것입니다.
소프트웨어 패키지는 개봉 즉시 사용할 수 있으며, 일반적으로 vanilla 버전에 필요한 기능이 모두 갖추어져 있지 않은 경우에도 많은 플러그인을 설치하여 기능을 추가할 수 있기 때문에 좋습니다.단점은 WordPress나 다른 CMS와 같은 것을 원하는 대로 동작시키는 것이 어렵다는 것입니다.플러그인을 사용하더라도 후드 아래에서 코드를 조작할 필요가 있습니다.
무엇이 고객의 요구에 적합한지 결정하는 것은 고객의 몫입니다.
즉, 엔터프라이즈 클래스의 프레임워크에 대한 경험을 쌓을 수 있는 것을 사용하고 싶다면 Symfony2 또는 Zend Framework를 검토하십시오.Yii도 확실한 제안입니다.
언급URL : https://stackoverflow.com/questions/12476057/php-framework-or-not-cake-php
'sourcecode' 카테고리의 다른 글
IMG를 사용하는 경우와CSS 배경 이미지? (0) | 2023.04.08 |
---|---|
VB의 여러 줄 문자열.그물 (0) | 2023.04.08 |
AngularJS + Django Rest Framework + CORS (CSRF Cookie가 클라이언트에 표시되지 않음) (0) | 2023.04.03 |
TypeScript, React, Eslint 및 단순 Arrow 함수 컴포넌트 문제 (0) | 2023.04.03 |
angular 2 라우터를 사용하여 현재 루트를 새로고침하는 방법 (0) | 2023.04.03 |