你可能还记得我们过去对Phalcon的迷恋,Phalcon是最快的PHP框架。
在这篇文章中,我们将介绍在 5 分钟内在我们的一个 Homestead 改进实例上启动和运行它的过程。如果您对Phalcon的原因或内容不感兴趣,请跳到“设置”。
回顾
如果你不熟悉它,Phalcon 是一个用 Zephir 编写的 PHP 框架,Zephir 是一种介于 C 和 PHP 之间的语言,有助于开发 PHP 扩展,而无需了解 C。这是一个黄金的中间地带,它允许PHP开发人员为他们的编程语言环境开发高度优化的模块,而无需学习一门全新的语言,因为Zephir编译成C语言,这就是PHP扩展的构成。
最初,Phalcon 是用纯 C 编写的扩展——这使得它的速度非常快。然而,这也带来了巨大的开销,当某些东西无法正常工作时,修复错误或检查引擎盖下发生的事情。添加新功能也花了很长时间,因为用 C 语言开发要困难得多。在第 2 版中,Phalcon 是用 Zephir 重写的,但随着 PHP 7 即将到来,并宣布与 PHP 5+ 的扩展 API 大相径庭,Zephir 无法将代码编译为兼容 PHP 7 的扩展,因此被抛在了 PHP 5 的土地上。
我们试图走在这里的最前沿,我们的武器库中没有更多的 Phalcon 空间。随着我们的 Homestead Improved 盒子启动并运行并为我们所有的教程提供支持,并且 PHP 7 的性能提升弥补了 Phalcon 在 PHP 5 时间中可能提供的任何速度提升,安装 Phalcon 的成本不再值得。
最近,情况发生了变化:Phalcon 推出了 3.0 LTS。
除了从现在开始关注 Semver,在未来 3 年内支持 3.0 版本,以及您可以在帖子中阅读的各种新功能和更改之外,迄今为止最大的更新是 Zephir 现在支持 PHP 7,并且不仅允许编译 Phalcon,还允许将任何其他 Zephir 代码编译到 PHP 7 中。您现在可以轻松地将自定义扩展移植到 Zephir,并快速将它们编译到 PHP 7 中。编译后的框架与 PHP 7 的性能提升相结合,在速度和资源节约方面提供了无与伦比的优势。
设置
现在,我们将完成在 PHP 7 驱动的 Homestead Improved 实例上设置 Phalcon 3 的过程。您可以使用任何您觉得舒适的环境,但以下说明将特定于安装了 PHP 7+ 的 Ubuntu 16.04 实例,以及 Git 和 Wget 等内容。我们还将通过该文件使用 Homestead Improved 方法来定义新站点。Homestead.yaml
安装Phalcon
sudo apt-get install software-properties-common sudo apt-add-repository ppa:phalcon/stable sudo apt-get update sudo apt-get install php7.0-phalcon sudo phpenmod -v 7.0 -s ALL phalcon sudo service php7.0-fpm restart
倒数第二个命令是用于启用 PHP 扩展的快捷命令。该标志告诉它要激活哪个 PHP 版本(我们在这里只想要 7.0)和哪个 SAPI(命令行、FPM 或两者兼而有之——我们两者都想要)。-v
演示Phalcon应用程序
我们可以在演示Phalcon应用程序(完成的Invo应用程序)上进行测试。
为 Phalcon 配置 Nginx
我们需要将我们的应用程序添加到以下块中:Sites
Homestead.yaml
- map: phalcon-tut.app
to: /home/vagrant/Code/phalcon-tut/public
确保将您选择的任何虚拟主机名称添加到主机操作系统文件中,以便解析为 VM 的 IP 地址。phalcon-tut.app
/etc/hosts
当然,我们还需要在 VM 外部运行才能应用此 Nginx 设置。vagrant provision
最后,我们编辑 Nginx 的块,并从location
location / {
try_files $uri $uri/ /index.php?$query_string;
}
自
location / {
try_files $uri $uri/ /index.php?_url=$uri&$args;
}
我们需要重新启动 Nginx 来应用更改
sudo service nginx restart
这照顾到了服务器端的事情。
引导应用
cd /home/vagrant/Code
git clone https://github.com/phalcon/invo phalcon-tut
克隆应用程序后,我们需要按照说明初始化其数据库。我们将更新这些内容,使其更现代一些,方法是使用 而不是 .utf8mb4
utf8
echo 'CREATE DATABASE invo CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci' | mysql -u homestead -psecret
cat schemas/invo.sql | mysql -u homestead -psecret invo
还有一个步骤未在应用的存储库中描述,即更改配置中的 baseUri。我们必须进入并更改为 ,否则资产 (JS/CSS) 将无法加载。app/config/config.ini
baseUri
/
这样做之后,果然,INVO已经启动并运行了。
发表评论 取消回复