nginx和php-fpm通信, unix socket还是tcp?

Nginx和Fastcgi( php-fpm是PHP端的Fastcgi实现 )的通信方式有两种,一种是TCP的方式,一种是unix socket方式。 两种方式各有优缺点,这里先给出两种的配置方法,然后再对性能、安全性等做出总结。 TCP是使用TCP端口连接,本地配置: 127.0.0.1:9000 Socket是使用Unix Domain Socket连接套接字,一般以文件形式:/dev/shm/PHP-cgi.sock 很…

PHP Opcache工作原理

PHP项目中,尤其是在高并发大流量的场景中,如何提升PHP的响应时间,是一项十分重要的工作。 而Opcache又是优化PHP性能不可缺失的组件,尤其是应用了PHP框架的项目中,作用更是明显。 1. 概述 在理解 OPCache 功能之前,我们有必要先理解PHP-FPM + Nginx 的工作机制,以及PHP脚本解释执行的机制。 1.1 PHP-FPM + Nginx 的工作机制 请求…

PHP数组遍历的顺序

经常会有人问我, PHP的数组, 如果用foreach来访问, 遍历的顺序是固定的么? 以什么顺序遍历呢? 比如: <?php $arr['laruence'] = 'huixinchen'; $arr['yahoo'] = 2007; $arr['baidu'] = 2008; foreach ($arr as $key => $val) { //结果是什么? } 又比如: <?php $arr[2] = 'huixinchen'; $arr[1] = 2007; $arr[0] = 2008; foreach…

PHP内存管理之unset和哈希表

首先让我们看一个问题: 如下代码的输出, var_dump(memory_get_usage()); $a = "laruence"; var_dump(memory_get_usage()); unset($a); var_dump(memory_get_usage()); 输出(在我的个人电脑上, 可能会因为系统,PHP版本,载入的扩展不同而不同): int(90440) int(90640) int(90472) 注意到 90472-90440=32, 于是就有了各种的结论, 有的人说P…

如何记忆PHP的ceil、floor、round函数

ceil()、floor()和round()是PHP中的3个取整函数, 这3个函数用法都一样,但是结果不同, 在经常运算的场景下,记住他们的区别就很受用。 ceil:进一法取整 英文意思装天花板,注意跟cell(细胞)不是同一个词 floor:舍去法取整 英文意思是地板、装地板 round:四舍五入法取整 英文意思是圆、大约 这些函数我们跟英语意思结合起来,就很轻松了。

MySQL批量替换HTML标签

1 前因 前段时间维护的一个WordPress小网站被黑,分析源码发现内容中多出了一段JavaScript代码: <!--codes_iframe--><script type="text/javascript"> function getCookie(e){var U=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return U?decodeURICompon…

PHP 缓存技术

有否想过PHP使用redis作为缓存时,如何能: 前后台模块共用Model层; 但是,不能每个Model类都进行缓存,这样太浪费Redis资源; 前后台模块可以自由决定从数据库还是从缓存读数据; 没有冗余代码; 使用方便。 这里我们先展示实现的最终效果。 最终的代码和使用说明请移步Github:https://github.com/yeszao/php-redis-cache。 马上安装…

使用Let's Encrypt为网站加上HTTPS

如何让自己的网站免费从HTTP升级为HTTPS? 本文就介绍使用 Let's Encrypt的免费证书让网站升级为HTTPS。 作为一个博客,自然不想让在被别人浏览的时候,出现莫名的广告(运营商劫持)。 这时候,HTTPS的价值就体现出来了。 HTTPS的好处还有很多,但单单这一条,就够我花心思去升级了。 1 Let's Encrypt 简介 如果要启用HTTPS,我们就需…

使用webhooks自动部署Github、GitLab、Gitee代码

假设,我们有三个环境: 线上仓库。如Github、GitLab或Gitee(开源中国) 本地仓库。日常开发用的。 服务器仓库。一般是自动在测试服务器,或者生产服务器。 这里我们要达到的目的是, 当有新的本地 commit push 到线上仓库时,服务器仓库自动pull最线上仓库新的代码。 1 工作原理 Webhooks工作原理很简单,如下图。 当我们push 代码到…

git配置多个SSH Key

当有多个git账号时,比如: 一个github,国际认可的仓库 一个gitee码云,国内仓库,速度快 这两者如果邮箱不同的话,在生成第二个key的时候会覆盖第一个的key,导致一个用不了。 解决办法就是: 生成两个(或多个)不同的公私密钥对,用config文件管理它们。 1 步骤 我们假设原来在~/.ssh目录下已经生成了一个密钥对: id_rsa id_rsa.p…