服务器部署篇(四):使用现代化工具 Capistrano 自动部署应用代码到生产环境

PHP 代码早期使用 FTP 部署到生产环境,不过这种方式显然不适合集群部署,也不安全,本教程主要讨论如何使用现代化工具自动部署,这种方式简单、可预知结果,而且可逆。 版本控制 把代码纳入版本控制是现代开发人员的基本素养,我们可以使用 Git,也可以使用 SVN,对于应用开发者来说,版本控制有助于记录代码的变化,我们可以把一个时间点的代码标记为发布版本,可以回滚到之前的状态,还可以在单独…

服务器部署篇(三):php.ini 配置调优 —— 让 PHP 应用性能维持在更高水平

上一篇我们讨论了如何配置运行 PHP 应用的服务器,接下来我们要讨论的是如何调优服务器,让 PHP 应用的性能维持在更高水平。 默认安装的 PHP 就像是在百货商店里购买的普通套装,虽然合身,却不完美。调优的 PHP 就像是定做的套装,完全匹配你的尺寸。不过,需要注意的是,调优 PHP 只是提升 PHP 性能和效率的举措,对拙劣的代码和无响应的 API 调用无计可施。 php.ini文件…

服务器部署篇(二):在服务器上对 PHP-FPM 和 Nginx 进行安装配置详解

PHP-FPM PHP-FPM(PHP FastCGI Process Manager),是用于管理 PHP 进程池的软件,用于接收和处理来自 Web 服务器(如Nginx)的请求。PHP-FPM会创建一个主进程(通常以操作系统中根用户的身份运行),控制何时以及如何把 HTTP 请求转发给一个或多个子进程处理。PHP-FPM 主进程还控制着什么时候创建和销毁 PHP 子进程。PHP-FP…

服务器部署篇(一):服务器主机选择及初始化配置 —— 新增用户及密钥对认证

主机 PHP 应用开发好了之后,还需要部署到远程主机上,才能让用户访问我们提供的服务。一般来说,目前市场上提供的主机有四种:共享服务器、虚拟私有服务器(VPS)、专用服务器和 PaaS。每种主机适用场景不同,相应的价格差距也很大。 共享服务器 这种最便宜,一般来说这种适用于非开发者部署网站,比如非程序员出生的站长,部署 WordPress、Discuz 之类的 CMS 网站,不需要懂代码…

最佳实践系列(十一):深入探讨 PHP 错误异常处理机制及 Laravel 框架底层的相应实现

错误和异常是很强大的工具,能帮助我们预期意料之外的事,使用优雅的方式捕获问题。不过,错误和异常很相似,容易让人混淆,二者都表示出问题了,都会提供错误信息,而且都有错误类型。然而,错误出现的时间比异常早,错误会导致程序脚本停止执行,如果可能,错误会委托给全局错误处理程序处理,有些错误是无法恢复的。对于高版本 PHP 我们基本上只需要处理异常,不用管错误,但我们仍然必须做好防御准备,因为 P…

又一个基于 Laravel 5.2 开发的后台管理系统

1、简介 zhanghaobao 是基于 Laravel 5.2 开发的一套后台管理系统,支持前后台分表登录,RBAC权限管理,通知闪存等功能,是用于个人以及公司项目快速开发的基础项目。 2、Github https://github.com/jwwb681232/zhanghaobao 3、安装 克隆资源库 git clone https://github.com/jwwb681232…

最佳实践系列(十):PHP 统一资源处理 API —— 流(Stream)的概述与使用详解

在现代 PHP 特性中,流或许是最出色但使用率最低的。虽然 PHP 4.3 就引入了流,但是很多开发者并不知道流的存在,因为人们很少提及流,而且流的文档也很匮乏。PHP 官方文档对流的解释如下: 流的作用是提供统一的公共函数来处理文件、网络和数据压缩等操作。简单而言,流是具有流式行为的资源对象,也就是说,流可以线性读写,并且可以通过 fseek() 之类的函数定位到流中的任何位置。 可能…

最佳实践系列(九):PHP 多字节字符串处理函数及字符编码

mbstring 扩展 我们所说的多字节字符指的是不在传统的 128 个 ASCII 字符集中的字符,比如中文字符。而 PHP 中处理字符串的函数默认假设所有字符都是 8 位字符,占用一个字节,如果使用这些 PHP 原生的字符串处理函数处理包含多字节字符的 Unicode 字符串,会得到意料之外的错误结果。 为了避免处理多字节字符出错,可以安装 mbstring 扩展。这个扩展提供了处理…

最佳实践系列(八):PHP 数据库统一处理 API —— PDO 扩展及其在 Laravel 底层的使用

PHP 支持多种数据库,如 MySQL、PostgreSQL、SQLite 和 Oracle 等,并且这些数据库都提供了用于 PHP 和相应数据库之间通信的扩展,如 mysqli、sqlite3 等。这样造成的一个问题是如果项目中使用了多种数据库,需要安装并使用多种 PHP 数据库扩展和接口,增加了学习和维护的成本。为此,从 PHP 5.1 开始引入了一个新的扩展 —— PDO。 PDO…

RabbitMQ 从入门到放弃系列笔记(八):远程调用(RPC)

在云计算环境中,很多时候需要用它其他机器的计算资源,把一部分计算任务分配到其他节点来完成。RabbitMQ 如何使用 RPC 呢?下面将会通过其它节点完成斐波纳契示例。 流程图  当客户端启动时,它创建了匿名的 callback queue 客户端发起 RPC 请求时将同时设置两个 properties:reply_to 设置为 callback queue;correlation_i…