
This is an expanded version of my talk at NginxConf 2017 on September 6, 2017. As an SRE
记录-交流-Web开发知识分享
This is an expanded version of my talk at NginxConf 2017 on September 6, 2017. As an SRE
这篇文章介绍了一些使前端应用程序加载更快并提供良好用户体验的技术。
我们将研究前端的总体架构。您如何首先加载必需的资源,并最大化资源已在缓存中的概率?
无论您的页面甚至需要是客户端应用程序,还是如何优化应用程序的呈现时间,我都不会说太多。…
Nginx Unit 是一个开源的,以 Nginx 为基础、支持多语言的 Web 服务器,它支持 Python,PHP,Go 等多语言应用程序,可以在不中断服务的情况下完成部署配置更改,以多种语言运行代码。而它运行多种语言的能力是基于内部路由器进程之间的隔离,路由器进程可终止传入的 HTTP 请求,以及应用程序进程的分组,路由器进程是持久的,不重新启动。
它具有以下特征:
使用 RESTful JSON API 进行动态重配置服务器;
同时支持多语言,多版本应用;
即将支持的特性有:
动态语言的进程管理功能;
TLS 支持;
TCP,HTTP,HTTPS,HTTP/2 路由和代理。…
PHP的新版本的性能是不断增强的,PHP最新版本是PHP7.3,我们来写个脚本,来测试一下PHP的性能如何
#!/usr/bin/env bash test=$(cat << 'eot' $time = microtime(true); $array = []; for ($i = 0; $i < 10000; $i++) { if (!array_key_exists($i, $array)) { $array[$i] = []; } for ($j = 0; $j < 1000; $j++) { if (!array_key_exists($j,…
我用的数据库是mysql5.6,下面简单的介绍下场景
课程表:
create table Course(
c_id int PRIMARY KEY,
name varchar(10)
)
数据100条
学生表:
create table Student(
id int PRIMARY KEY,
name varchar(10)
)
数据70000条
学生成绩表SC
CREATE table SC(
sc_id int
… PHP 7.4增加了预加载(Opcache Preloading)的支持,这一功能可以显著提高PHP程序的运行性能。
它是如何工作的:
简单来说就是把PHP代码完全加载到内存中来达到提升性能的目的。
让我们深入研究一下。…
Socket(套接字)一直是网络层的底层核心内容,也是 TCP/IP 以及 UDP 底层协议的实现通道。随着互联网信息时代的爆炸式发展,当代服务器的性能问题面临越来越大的挑战,著名的 C10K 问题(http://www.kegel.com/c10k.html)也随之出现。幸亏通过大牛们的不懈努力,区别于传统的 select/poll 的 epoll/kqueue 方式出现了,目前 linux2.6 以上的内核都普遍支持,这是 Socket 领域一项巨大的进步,不仅解决了 C10K 问题,也渐渐成为了当代互联网的底层核心技术。libevent 库就是其中一个比较出彩的项目(现在非常多的开源项目都有用到,包括 Memcached),感兴趣的朋友可以研究一下。
由于网络上系统介绍这个部分的文章并不多,而涉及 PHP 的就更少了,所以石头君在这里希望通过《Socket深度探究4PHP》这个系列给对这个领域感兴趣的读者们一定的帮助,也希望大家能和我一起对这个问题进行更深入的探讨。首先,解释一下目前 Socket 领域比较易于混淆的概念有:阻塞/非阻塞、同步/异步、多路复用等。
1、阻塞/非阻塞:这两个概念是针对 IO 过程中进程的状态来说的,阻塞 IO 是指调用结果返回之前,当前线程会被挂起;相反,非阻塞指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。…
近期评论