天天看點

LNP之PHP C 擴充 (Phalcon)

Nginx的特性:

    高性能的靜态web伺服器

    作為smtp,httpd,tomcat,pop3等反向代理伺服器

    10000個并發,僅消耗1M記憶體

    基于libevent庫,支援event的epoll的邊緣觸發機制。

    異步IO,記憶體映射

    負載均衡、緩存

    支援ssl,https,fastcgi協定

    支援不停機更新,日志滾動,配置更新

安裝方式:

    編譯安裝     

    rpm安裝(epel)

編譯安裝nginx的步驟:

    開發環境:

    CentOS 6:  yum groupinstall "Development Tools" "Server Platform Development"

    CentOS 7:   yum groupinstall "Development Tools" 

    依賴的包

        yum install -y pcre-devel openssl-devel

    擷取源碼包: nginx.org

    編譯安裝:

        1、添加nginx使用者

            useradd -r -g nginx

        2、編譯

            tar xf  nginx-1.12.1.tar.gz  

            ./configure --with-debug --with-pcre --http-client-body-temp-path=/var/tmp/nginx/client-body --http-proxy-temp-path=/var/tmp/nginx/proxy --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-threads --user=nginx --group=nginx --lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx/nginx.pid --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --conf-path=/etc/nginx/nginx.conf --prefix=/usr/local/nginx

            make -j 4 && make install

            install -d /var/tmp/nginx/{client-body,proxy,uwsgi,scgi,fastcgi}     

    編譯後的完善:

        1、環境變量

            echo "export PATH=/usr/local/nginx/sbin:$PATH" > /etc/profile.d/nginx.sh

        2、配置檔案的優化:

            1)優化性能相關的配置:

                worker_processes # ;  [main段] 所能夠打開的worker程序的個數是"cpu實體核心數-1"

                worker_cpu_affinity auto; [main段] 增加緩存命中率

                worker_priority #; [main段] 資料越低,配置設定CPU的時間越多,越先被排程到CPU上運作。

             2)事件相關的配置:

                accept_mutex on|off; 主要程序輪流地序列化的排程請求至每個worker程序

                use method; 處理使用者請求的方法prefork:select,poll; event:epoll

                worker_connections number; 一個worker程序所能夠接收的最大并發連接配接數量。

                        worker_processes  3; * worker_connections  1024  < 65536

                        目前系統能夠打開的總套接字數量:65536

                注意修改配置後:

                    檢測配置檔案的文法:nginx -t 

                    重載配置檔案:nginx -s reload

php安裝:

php執行PHP腳本代碼一般會經過如下4個步驟

    1、Scanning(Lexing) —— 将PHP代碼轉換為語言片段(Tokens)

    2、Parsing —— 将Tokens轉換成簡單而有意義的表達式

    3、Compilation —— 将表達式編譯成Opocdes

    4、Execution —— 順次執行Opcodes,每次一條,進而實作PHP腳本的功能

phalcon的特點:

    低開銷

    低記憶體消耗和 CPU 相比傳統的架構

    MVC & HMVC

    子產品、 元件、 模型、 視圖和控制器

    依賴注入

    依賴注入和位置的服務和它的本身他們的容器。

    Rest

    在這種情況下,你可以使用任一微或完整的堆棧應用程式達到你的目标。此外,一套強大的 HTTP 助手。

    自動加載

    提供符合PSR-4标準的自動加載機制

    路由器

    Phalcon\Mvc\Router 提供了先進的路由功能。

編譯安裝php的步驟:

        # yum -y groupinstall "Desktop Platform Development" 

    程式包:

        # yum -y install bzip2-devel libmcrypt-devel libxml2-devel

    擷取源碼包:php.net

        tar xf  php-5.6.31.tar.xz

     ./configure --prefix=/usr/local/php --with-mysql=mysqlnd --with-pdo-mysql=mysqlnd --with-mysqli=mysqlnd --with-openssl --enable-fpm --enable-sockets --enable-sysvshm --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-libxml-dir=/usr --enable-xml  --with-mhash --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-curl 

    make -j 4 && make install

    編譯安裝後續配置:

        配置檔案:

            # cp php.ini-production /etc/php5/php.ini

        提供腳本

            # cd /usr/local/php

            # cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm

            # chmod +x /etc/rc.d/init.d/php-fpm

            # chkconfig --add php-fpm

        提供配置檔案:

            # cp /usr/local/php5/etc/php-fpm.conf.default /usr/local/php5/etc/php-fpm.conf 

        配置fpm的相關選項為你所需要的值,并啟用pid檔案(如下最後一行):

            # vim /usr/local/php5/etc/php-fpm.conf

            pm.max_children = 50

            pm.start_servers = 5

            pm.min_spare_servers = 2

            pm.max_spare_servers = 8

            pid = /usr/local/php5/var/run/php-fpm.pid 

     測試啟動php-fpm

            service php-fpm start

加入phalcon子產品

    1、擷取phalcon源碼

            phalconphp.com/zh/

    2、編譯:

        git clone https://github.com/phalcon/cphalcon

        cd cphalcon/build 

        sudo ./install

    3、在php.ini中添加php擴充:

            extension=phalcon.so

   4、重新開機php-fpm,驗證子產品:

        php -m

        Array(   

        [0] => Core    

        [1] => libxml    

        [2] => filter    

        [3] => SPL    

        [4] => standard    

        [5] => phalcon    

        [6] => pdo_mysql

        )

本文轉自 lccnx 51CTO部落格,原文連結:http://blog.51cto.com/sonlich/1950946,如需轉載請自行聯系原作者