Доступ к Zend_View

Из контроллера действий доступ к объекту вида осуществляется просто:
$view = $this->view

Но иногда нужно внести некоторые изменения в скрипт вида прямо из плагина, например добавить ссылку на CSS. Если нужно получить доступ к вьюшке из хука плагина (Zend_Controller_Plugin_Abstract), то сделать это можно несколькими способами (список не полон):
public function postDispatch(Zend_Controller_Request_Abstract $request)
{
    /**
    * @var $view Zend_View
    * @var $vr Zend_Controller_Action_Helper_ViewRenderer
    * @var $bootstrap Zend_Application_Bootstrap_BootstrapAbstract
    */

    // Через хелпер Layout
    $view = Zend_Controller_Action_HelperBroker::getStaticHelper('Layout')->getView();

    // Через viewRenderer (он автоматизирует работу с вьюшками)
    $vr = Zend_Controller_Action_HelperBroker::getStaticHelper ('viewRenderer');
    $view = $vr->getActionController()->view;

    // Тоже самое, но короче
    $vr = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $view = $vr->view;

    // Через ресурс
    $bootstrap = Zend_Controller_Front::getInstance()->getParam('bootstrap');
    $view = $bootstrap->getResource('view');
}
Второй метод не будет работать в хуках, вызываемых ранее postDispatch, т.к. на момент их исполнения контроллер действия еще не установлен:

Установка PHP-FPM на Debian

Инструкция по установке

Устанавливаем PHP-FPM с nginx на минимальную инсталляцию Debian 5.


Устанавливаем Nginx.
Все перечисленные действия выполняются от рута.

sudo apt-get install nginx




vi /etc/nginx/sites-available/default



server {
    listen   80;
    server_name  localhost;
    access_log  /var/log/nginx/localhost.access.log;

## Default location
    location / {
        root   /var/www;
        index  index.php;
    }

## Images and static content is treated different
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
      access_log        off;
      expires           30d;
      root /var/www;
    }

## Parse all .php file in the /var/www directory
    location ~ .php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   backend;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }

## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny  all;
    }
}
upstream backend {
        server 127.0.0.1:9000;
}


Устанавливаем PHP-FPM

cd /tmp

wget us.archive.ubuntu.com/ubuntu/pool/main/k/krb5/libkrb53_1.6.dfsg.4~beta1-5ubuntu2_i386.deb

wget us.archive.ubuntu.com/ubuntu/pool/main/i/icu/libicu38_3.8-6ubuntu0.2_i386.deb
 
dpkg -i *.deb
 
echo "deb http://backports.debian.org/debian-backports  lenny-backports main" >> /etc/apt/sources.list && aptitude  update
aptitude install -t lenny-backports "nginx"
echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.list
apt-get update
apt-get install php5-cli php5-common php5-suhosin
apt-get install php5-fpm php5-cgi

 
Настройки php-fpm:

pm = dynamic
pm.max_children = 50
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500
 
В завершение перезапускаем службы
sudo /etc/init.d/nginx restart
sudo /etc/init.d/php5-fpm restart
 

Установка eAccelerator на Debian

Краткая инструкция как собрать deb-пакет и установить эту мегаштуку.

Естественно что перед этим должен быть установлен пакет php5



Код
sudo apt-get install build-essential php5-dev
mkdir ./tmp
cd ./tmp
wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
tar xvfj eaccelerator-0.9.5.3.tar.bz2
cd ./eaccelerator-0.9.5.3
phpize
./configure
make
make install


После всех этих действий пакет сформируется в deb и установиться

Затем правим конфигурационный файл '/etc/php5/conf.d/eaccelerator.ini':

Код
extension="eaccelerator.so"
eaccelerator.shm_size="64"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="1800"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"


И создаем необходимые для кеша директории:

Код
mkdir -p /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator


Ну и перезапускаем apache
Блоги, php