많은 sites도 읽었습니다. here 심지어 Zend Framework 응용 프로그램의 성능을 향상시키기 위해 Zend_Application을 부트 스트랩에 사용하지 않지만 다음과 같은 사이트를 찾을 수 없었습니다. 이것은 입증되었습니다.Zend_Application을 사용하지 않는 Zend Framework 프로젝트
이 방법을 설명하고 일부 코드 샘플을 제공 할 수있는 곳을 아십니까?
감사
많은 sites도 읽었습니다. here 심지어 Zend Framework 응용 프로그램의 성능을 향상시키기 위해 Zend_Application을 부트 스트랩에 사용하지 않지만 다음과 같은 사이트를 찾을 수 없었습니다. 이것은 입증되었습니다.Zend_Application을 사용하지 않는 Zend Framework 프로젝트
이 방법을 설명하고 일부 코드 샘플을 제공 할 수있는 곳을 아십니까?
감사
:
여기 다소 당신이 후에 어떻게 될 것인가에 들어가는하지만, 모듈 식 접근 방식 (덜 여전히 흥미 없음)를 참조한다 링크입니다https://gist.github.com/2822456
아래의 내용을 완성하기 위해 복제되었습니다. 테스트를 거치지 않았지만 일반적으로 생각하는 방식 (!)에 대한 몇 가지 아이디어가 효과가있을 수 있습니다. 이제 조금 밟아 보았으므로 Zend_Application, 부트 스트랩 클래스 및 구성 가능/재사용 가능한 응용 프로그램 자원에 대해 큰 감사를 표합니다. ;-)
// Do your PHP settings like timezone, error reporting
// ..
// Define path to application directory
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/_zf/application'));
// Define application environment
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));
// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
// Get autoloading in place
require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
// Any additional configs to autoloader, like custom autoloaders
// Read config
$config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/application.ini', APPLICATION_ENV);
// bootstrap resources manually:
// * create db adapter
// * create resource autoloaders with the mappings you need
// * etc
// Get the singleton front controller
$front = Zend_Controller_Front::getInstance();
// Set controller directory
$front->setControllerDirectory(APPLICATION_PATH . '/controllers');
// Or set module directory
$front->setModuleDirectory(APPLICATION_PATH . '/modules');
// Other front config, like throw exceptions, etc.
// ...
//
// Create a router
$router = new Zend_Controller_Router_Rewrite();
// Add routes to the router
$router->addRoute('myRoute', new Zend_Controller_Router_Route(array(
// your routing params
)));
// More routes...
// Alternatively, the routes can all be in an xml or ini file and you can add
// them all at once.
// Tell front to use our configured router
$front->setRouter($router);
// Add an plugins to your $front
$front->registerPlugin(new My_Plugin());
// other plugins...
// Dispatch the request
$front->dispatch();
일부보기 /보기 렌더러 작업이있을 수도 있습니다. 그러나 다른 곳에서 언급했듯이 ViewRenderer는 단순한 성능 저하를 초래합니다.성능은 문제가 있다면, 당신은 ViewRenderer을 비활성화하고 액션 컨트롤러는 $front->dispatch()
의 $request
및 $response
개체가 자동으로 생성됩니다를 호출 할 때 $this->view->render('my/view-script.phtml')
사용하여 자신의 렌더링을 호출 할 수 있도록 할 것입니다. 응답의 Content-Type 헤더에 charset을 설정하는 것과 같이 부트 스트랩에서 특정 작업을 수행하려는 경우 직접 요청/응답 객체를 만들고 원하는 것을 수행 한 다음 앞면에 첨부 할 수 있습니다 with $front->setResponse($response);
요청 오브젝트와 같습니다.
내 예제에서는 Padraic 노트가 성능 조회를 초래하는 Zend_Loader_Autoloader
및 Zend_config_Ini
을 사용합니다. 다음 단계는 설정을 위해 배열을 사용하고, 프레임 워크에서 require_once 호출을 제거하고, 다른 오토로더 등을 등록하는 것입니다. 독자에게 남은 연습 ... ;-)
안녕하세요이 (가) 부트 스트랩에서 Zend_Application를 사용하지 않는 다소 동의하지 내가 아직 더는이 기술의 구체적인 예를 볼 수 있습니다.
개인적으로 나는 응용 프로그램을 부트 스트래핑하기 위해 Zend_app을 사용하지 않을 경우 이점을 알지 못합니다. a) 자신의 일을 '젠드 웨이'라고 가정하고 b) 프로젝트가 크거나 젠드 프레임 워크를 사용하여 또는 그 문제에 대해). Zend_App는 표준화 된 구조 내에서 일치 복잡한 부트 스트랩 을 만들기에 좋은 곳입니다 동안
, 그것은 기본 성능에 상당한 성능 저하없이 오지 않는다. 보다 직접적인 부트 스트랩 (Zend_App가 도착할 때까지 ZF의 전형)이 훨씬 빠르며 구성 파일없이 일 수도 있습니다.
촬영 : Pádraic Brady link.
글쎄, 위의 내용은 이해할 수 없다. 그는 기본적으로 Zend_App은 복잡한 부트 스트랩에 적합하지만 성능이 좋다고 말했다. 그러나 모든 프레임 워크/프레임 워크 구성 요소에 대한 전제가 아닌가? 저는 Padraic이 매우 영리한 사람이라는 것을 알고 있습니다. 그리고 저는 그가 자신의 추론을 가지고 있다고 확신합니다. 그러나 저는이 제안에 대한 예/증거를보고 싶습니다. 당신이 벤치 마크 기본 응용 프로그램을 최신 젠드 프레임 워크를 사용하고 기존의 비 Zend_App 방법을 사용하여 < 1.10에서 젠드 프레임 워크를 사용하지만, 분명 완벽하지 Zend_App 명확하게 빠른에 있지만 나는 말을 할 수 귀하의 질문에 대답 아마도
대부분의 앱을 설치하고 실행해야하므로 '실적이 좋다'는 가치가 있는지 여부는 개발자에게 추측됩니다. 난 그냥 함께이 던진
이 점에 유의해야합니다 문서도 2 세 이상입니다 ... 그 이후로 상황이 바뀌 었는지 궁금합니다 –
동의합니다. Zend_App은 훌륭하게 작동하며 깨끗합니다. – conradfr
예, 테스트 케이스 및 벤치 마크가 없어도 조금 불필요한 것 같습니다. 내가 사용한 트릭은 Zend 라이브러리의 모든 require/include를 제거하는 것입니다. – conradfr