使用Phalcon7

安装

编译环境

# 切换到所使用的PHP版本
scl enable appnode-php71 bash
# 安装PHP开发包
yum install appnode-php71-php-devel -y

开始编译安装Phalcon7

git clone --depth=1 git://github.com/dreamsxin/cphalcon7.git
cd cphalcon7/ext
phpize
./configure
make && sudo make install
# 编译安装完成后,我们可以看到最后一行输出:
/opt/appnode/appnode-php71/root/usr/lib64/php/modules/
# 说明扩展模块文件已安装到 /opt/appnode/appnode-php71/root/usr/lib64/php/modules/ 目录下。

配置扩展

# PHP 7.1 的扩展配置文件目录位于
/etc/opt/appnode/scls/appnode-php71/php.d/
# 在这个目录下,创建文件 99-Phalcon7.ini,并写入 Phalcon7 模块加载配置,如:
extension=phalcon.so
# 也可以直接使用命令写入配置文件:
echo "extension=phalcon.so" > /etc/opt/appnode/scls/appnode-php71/php.d/99-Phalcon7.ini
# 如果之前通过appnode安装过phalcon,应该删除50-phalcon.ini
# 测试扩展是否生效
php -m | grep phalcon
# 显示
phalcon7
# 查看详细信息
php --ri phalcon7
# 注意版本1.3.2
Phalcon7 Version => Phalcon7(Dao7)-1.3.2

退出 PHP 7.1 环境

exit

重启php运行池 查看phpinfo,确认phalcon7

配置nginx

server {
    listen       80;
    server_name  192.168.1.114;
    root         /var/www/phalcon/public/;
    index        index.html index.htm index.php;

    location / {
        try_files  $uri $uri/ /index.php?_url=$uri&$args;
    }

    location ~ ^/.+\.php {
        fastcgi_index            index.php;
        fastcgi_split_path_info  ^(.+\.php)(/.*)$;
        fastcgi_param            SCRIPT_FILENAME $request_filename;
        fastcgi_param            PATH_INFO $fastcgi_path_info;
        fastcgi_param            PATH_TRANSLATED $document_root$fastcgi_path_info;
        include                  fastcgi_params;
        fastcgi_pass             127.0.0.1:9000;
    }

    location ~ /\.ht {
        deny  all;
    }
}

开始

使用Phalcon7 Developer Tools创建项目目录架构

# Phalcon7 Developer Tools放到可执行目录(前者必须是绝对路径)
ln -s /vhs/cphalcon7/devtools/phalcon.php /usr/bin/phalcon
chmod ugo+x /usr/bin/phalcon
# 进入安装扩展的环境bash
scl enable appnode-php71 bash
# 查看命令选项
phalcon commands
# 进入项目目录,创建文件
cd /var/www/phalcon/
# 创建
phalcon create-project phalcon
# 对应的nginx配置,入口文件
phalcon/public/index.php

Phalcon7 Developer Tools

# 生成控制器(Generating Controllers)
phalcon create-controller --name test
# 生成模型
phalcon model products
## 指定表名,先配置数据库(app/config/config.php),–-get-set 参数以实现对字面的保护, 这样我们可以在setter/getter方法里执行一些业务逻辑
phalcon model --name tablename
# 生成基本的 CRUD(Scaffold a CRUD)
phalcon scaffold --table-name products

集成工具到 PhpStorm(Integrating Tools with PhpStorm IDE)

在 PHP IDE 中包含 devtoolside1.1.0 就能在 IDE 中实现 Phalcon7 相关类和方法的自动提示。

使用其他比如图形等扩展,完整功能

make clean清除make编译的缓存 class Phalcon\Async :php –enable-sysvsem –enable-pcntl

# 回到cphalcon7/ext文件夹,开始编译
cd cphalcon7/ext
phpize
# 一般使用如下
./configure --with-php-config=php-config \
--enable-chart=yes \
--enable-qrcode=yes \
--enable-process=yes \
--enable-websocket=yes
# 全部
./configure --with-php-config=php-config \
--enable-chart=yes \
--enable-qrcode=yes \
--enable-process=yes \
--enable-intrusive=yes \
--enable-cache-yac=yes \
--enable-storage-btree=yes \
--enable-storage-wiredtiger=yes \
--enable-storage-bloomfilter=yes \
--enable-storage-datrie=yes \
--enable-storage-lmdb=yes \
--enable-storage-libmdbx=yes \
--enable-storage-leveldb=yes \
--enable-websocket=yes \
--enable-server=yes \
--enable-python=yes

make -j4
sudo make install

依赖

# 需要依赖
# libqrencode-dev libzbar-dev imagemagick libmagick++-dev libmagickwand-dev libmagickcore-dev libpng12-dev
# centos安装

# 图像
yum install ImageMagick
yum install ImageMagick-devel
yum install tcl-devel libpng-devel libjpeg-devel ghostscript-devel bzip2-devel freetype-devel libtiff-devel

# websocket,安装libwebsockets
# https://github.com/warmcat/libwebsockets/
wget https://github.com/warmcat/libwebsockets/archive/v3.0.1.tar.gz
yum install cmake openssl-devel
cd libwebsockets
mkdir build
cd build
cmake ..
make
make install
sudo /sbin/ldconfig

# NoSQL 安装wiredtiger
# https://github.com/wiredtiger/wiredtiger
./autogen.sh
./configure
make
make install

# mdbx 
# https://github.com/leo-yuriev/libmdbx
# 安装 ioarena:https://github.com/pmwkaa/ioarena
./runme.sh
# 运行libmdbx的
git clone https://github.com/leo-yuriev/libmdbx.git
cd libmdbx
make
make install

# python ??