当前位置: 首页 > news >正文

管理网站建设公司好吗方案图网站

管理网站建设公司好吗,方案图网站,商城网站离不开支付系统,网站建设使用的什么软件有哪些内容本文主要是阅读《高性能PHP》之后做的学习笔记#xff0c;以便查阅。 简介《高性能PHP 7》从PHP所需环境讲起#xff0c;涉及环境搭建与配置设置等内容#xff0c;能够帮助有一定计算机基础的读者实现PHP运行环境的搭建及PHP周边软件的安装配置。《高性能PHP 7》亮点内容是介… 本文主要是阅读《高性能PHP》之后做的学习笔记以便查阅。 简介《高性能PHP 7》从PHP所需环境讲起涉及环境搭建与配置设置等内容能够帮助有一定计算机基础的读者实现PHP运行环境的搭建及PHP周边软件的安装配置。《高性能PHP 7》亮点内容是介绍PHP 7特性的部分同时也告诉读者哪些语法将会被废弃对读者上手PHP 7有极大的帮助。除介绍PHP 7的新特性外《高性能PHP 7》用大量章节介绍如何使用PHP 7及周边软件来构造高性能的Web应用程序同时介绍了一些PHP开发的最佳实践帮助读者更好地理解Web项目与PHP应用程序开发。附录部分为读者介绍了一些不错的工具讲解了MVC与开发框架等周边知识能够帮助读者更好地开发PHP项目。 环境搭建PHP出现的背景由于PHP语言自身存在性能问题的瓶颈面对大规模应用场景存在性能低下问题即使是小型应用程序在面对大流量场景时也存在这个问题。 在此期间出现了很多缓存技术方案例如APC缓存等但它们只是治标不治本。所以PHP社区迫切需要一款能够显著提升PHP应用性能的新版本此时PHPNG项目随之而来。 PHPNG全称PHP Next Generation是PHP的全新分支主要目标是提升应用性能。一些人认为PHPNG属于即时编译(Just In TimeJIT)但实际上它是基于Zend Engine的依次重构以针对性能问题的进行专项优化。PHPNG是PHP 7项目的基础通过PHP官网的wiki可以看到PHPNG项目已被并入PHP 7的开发主干。 搭建windows环境在Windows系统中已经有很多PHP集成环境工具这些工具打包了Apache、PHP、MySQL等PHP常用的软件是的这些集成安装和使用非常的简单。这些工具大部分采用Apache搭配PHP 7作为WebServer这样的集成环境有XAMPP、WAMPP、EasyPHP。其中只有EasyPHP同样也可以采用Nginx搭配PHP 7使用的方式作为WebServer并支持WebServer在Nginx、Apache之间的轻松转换。 XAMPP软件还可以运行在Linux与MacOS上而WAMPP与EasyPHP只能运行在Windows环境中相比之下更推荐支持Nginx的EasyPHP。关于WebServer软件本文推荐使用Nginx。 Nginx的Windows版本可以从http://nginx,org/en/download.html 下载虽然用其他主线版本没有什么问题但是更推荐使用稳定版本。PHP的Windows版本可以从http://windows.php.net/download/下载下载与系统匹配的32位或者64位的非线程安全版本。 我们可以根据自己的实际情况选择集成环境但是我们应该更深入掌握WebServer的每一个细节所以我们独立安装Nginx或者Apache、PHP 7、MySQL并设置好他们之间的连接手动将它们配置到一起。 此处以Nginx为例 根据上面提供的地址下载Nginx、PHP的二进制程序复制Nginx到一个自定义的目录中,再将PHP复制到Nginx目录下或是找一个固定的目录存放PHP。在PHP目录下有两个.ini文件分别是php.ini-development与php.ini-production选择其中之一并改名为php.ini之后PHP会以这个文件作为配置文件。按住shift键并用鼠标右击PHP目录打开命令行窗口输入以下命令php-cgi -b 127.0.0.1:9000 此处参数-b用于告知PHP我们希望启动FastCGI服务执行上述命令会将绑定PHP到127.0.0.1这个IP地址的9000端口上至此PHP便运行起来了。 配置Nginx打开nginx_folder/conf/nginx.conf文件首先在配置文件的服务器配置信息中添加根目录和默认首页文件具体如下server { root html; index index.php index.html index.htm; 现在配置Nginx让它在启动时通过FastCGI模式与PHP通信。在nginx.conf中配置去掉下面这块配置的注释即可启用location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME complete_path_webroot_folder$fastcgi_script_name;include fastcgi_params; 注意complete_path_webroot_folder$fastcgi_script_name路径的默认值是nginx目录下的一个HTML的目录。另外fastcgi_param配置中的符号“\”需要用符号“/”加以替换。 在Nginx目录下通过以下命令重启Nginxnginx -s restart重启之后打开浏览器输入Windows服务器输入Windows服务器、设备的IP地址或主机名即可看到Nginx欢迎页面。 到这一步就只需验证PHP的安装情况以及它与Nginx的工作情况在Webroot目录下创建一个info.php文件并且编辑代码在浏览器其中访问对应的服务器验证是否能够正确解析这个文件。PHP 7新特性  PHP 7具有很多编写高性能、高效代码的新特性同时也移除了一些历史版本中过时的特性这些过时特性如果在PHP 7中使用会触发一个Error错误。目前大多数的Fatal错误都可以异常捕获所以PHP不再显示一些不标准的Fatal错误取而代之的是抛出一个携带着很多可用信息的异常。PHP 7提供了一些OOP新特性。 类型声明老版的PHP在函数和类之间传递参数时不必声明变量类型同样返回数据时也不必声明变量类型任何数据都可以被传递。这样会造成PHP不清楚传递的是什么类型的变量函数和方法接收的变量数据类型也是未知的。因为PHP 7引入形参和返回值的类型声明。 自己的理解其实最开始PHP不需要类型声明就是为了简化编程那么处理过程就会更复杂这可能就是一个性能与编程简便的一个权衡。类型声明是针对大规模应用场景的一个升级这就是一个语言成长的必经之路吧。 形参声明PHP 7支持的形参类型声明的类型有整型、浮点型、字符串型、布尔类型可用于函数形参及对象的方法形参上。例如public function age(int $age) { // 函数体} 返回值声明类似于形参声明注意类型也可以是某个类的对象,例如public function age(int $age) : string { // 函数体} 命名空间与use关键字批量声明当代码量规模变大时很多类会放在命名空间下这样方便维护和管理。然而当出现一个命名空间下有很多类且我们要一个性使用多个类的情况下我们不得不直接将它们声明在代码的顶部。在命名空间下声明类如下所示 1234$book new Publichers\Packt\Book();$ebook new Publichers\Packt\Ebook();$video new Publichers\Packt\Video();$Presentation new Publichers\Packt\Presentation();加载类的方式有两种 通过include声明显示要加载的类。通过_autoload函数来加载所有的类文件。PHP 7引入批量的use声明用以增加代码的可读性其中包括三种声明模式 非混合模式的use声明 123use Publichers\Packt\{ Book, Ebook, Video, Presentation };use function Publichers\Packt\{ getBook ,savebook };use const Publichers\Packt\{ COUNT,KEY };混合模式的use声明 12345678910use Publichers\Packt\{ Book, Ebook, Video, Presentation, function getBook; function saveBook; const COUNT, const KEY};复合模式的use声明 123456use Publichers\Packt\{ Paper\Book, Electronic\Ebook, Media\Video, Media\Presentation};匿名类的声明与使用同时进行它具备其他类所具备的所有功能差别在于匿名类没有类名。匿名类的一次性小任务代码流程对性能提升帮助很大你不必将整个类写完后再使用它。匿名类的语法如下 1234567new class(argument) { definition };//示例如下$name new class() { public function _construct() { // 此处为构造函数 echo Altaf Huassain; }};虽然匿名类是没有命名的但是PHP内部会在内存的引用地址表中为其分配一个全局唯一的名称。匿名类在继承方面与命名类相同一样可以继承父类及父类的方法和接口方式与继承命名类相同。 老式构造函数的摒弃从PHP 4开始构造函数便可以通过命名保持与类名一致的方式来声明自己是构造函数这种方式一种被沿用至PHP 5.6.大师在PHP 7中这种构造函数的声明方式不推荐使用。 老式构造方法 123456class Packt { protected $number; public function packt() { // 此处为构造函数 echo Altaf Huassain; }};新的构造方法 123456class Packt { protected $number; public function _construct() { // 此处为构造函数 echo Altaf Huassain; }}; 注意老式的构造函数声明方式在PHP 7中被使用只是会产生不推荐的信息但是一般这类不推荐的方式在接下来的版本中会被移除所以不建议使用老版构造方法。在PHP 7中同时出现老版构造函数和新方法新方法的构造函数会被调用而老版构造函数不会被调用。 Throwable接口PHP 7提供一种全局的接口使得所有的类都可以基于此使用throw关键字。在PHP 7之前异常可以被截获但是错误不能被截获。从PHP 7之后任何完整程序或者一部分中的Fatal错误可以被截获。为了更好地截获诸多的错误大多数Fatal错误PHP 7提供了throwable接口异常与错误都继承这个接口。 自定义的PHP类是不能继承throwable接口的如果希望继承throwable接口需要继承某个异常类。 太空飞船操作符太空飞船操作符在比较变量包括字符串型、整型、浮点型、数组、对象等时比较有用太空飞船操作符将、、 具体的使用规则如下 当符号两边相等时返回0当符号右边大于符号左边时返回-1当符号右边小于符号左边时返回1null合并运算符??在PHP 7中推荐使用合并运算符在第一操作数存在时可被直接返回第二操作数具体使用方法如下123$post $_POST[title] ?? NULL;// 等效于老版的PHP的如下语句$post ($_POST[title]) ? $_POST[title] : NULL; 合并运算符可以连续使用1$post $_POST[title] ?? $_GET[title] No POST or GET; 统一变量语法通过花括号来规定变量解析的优先级针对以下情况12345$first [name second];$second Howdy;echo $$first[name]; //PHP 5.X版本这种方式与从左到右的变量解析的原则$$first会优先被解析产生不一致。这样的方法在PHP版本中会产生错误。// 统一变量语法echo ${$first[name]}; 其他特性与变更PHP 7还更新了很多其他特性例如常量数组、switch循环中的多个默认值、session_start中的选项数组等。 常量数组 PHP 5.6开始常量数组可以使用const关键字来声明方法如下 1const STORES [en, fr, ar ];- 在PHP 7中常量数组可以通过define函数初始化如1define(STORES, [en, fr, ar ];switch中的多个default默认值:PHP 7开始switch循环语句中不允许出现多个default默认值否则会出现Fatal错误Fatal error: Switch statements may only contain one default clause in ... Session_start函数中的选项数组 在PHP 7之前使用session时必须先调用session_start()函数这个函数并没有参数要传递所有session相关的配置都在php,ini文件中。从PHP 7开始可以在调用函数时传递参数选项数组这些设置信息将覆盖php.ini中的session配置且实参部分传递的选项数组将优先于php.ini中的session配置而被使用代码示例如下 1234session_start([ cookie_lifetime 3600, read_and_close true]);Unserialize函数引入过滤器 通常使用serialize和unserialize两个方法分别对对象进行序列化和反序列化。然而unserialize()函数并不安全因为没有任何过滤项并且可以反序列化任何类型的对象。因此PHP 7引入过滤器默认情况下允许反序列化所有类型的对象。使用方法如下 1$result unserilize($object, [allowed_classes [Packt, Books, Ebooks]]);PHP 7应用性能提升  为了提升性能PHP 7已经完全基于PHPNG进行重写。不过依然有很多其他的方法可以用来进一步提升PHP 7的性能譬如高性能的代码、采用最佳实践、WebServer调优、缓存等。 Nginx与Apache目前有很多HHTP Server软件可供使用目前最流行的是Nginx与Apache。 Apache Apache具有足够灵活、广泛支持、能力强化、以模块方式集成大多数语言如PHP的优点。因为Apache是在进程内部解析大多数脚本语言的所以没有软件间通信的开销。Apache处理请求的模式有三种prefork模式线程创建进程、worker模式进程创建线程、事件驱动模式与worker模式相似但这种模式会为连接保持创建专用线程活动请求使用另外创建的线程因此它能提供更高的灵活度。 由于每个请求都会由一个进程或者线程处理所有Apache在处理请求时开销很大。当它应用于高并发场景时其性能低下的问题就凸显出来了。 Nginx Nginx提供的异步、事件驱动、非阻塞请求处理。Nginx不必等待每个请求完成避免了锁住资源。Nginx创建许多工作进程每个工作进程可以处理数千个链接因此可以使用很少的进程来承载高并发流量。 Nginx没有内置任何解释性语言这样Nginx就可以专注处理请求的接收和响应而具体的解析脚本语言的进程则在Nginx之外。 通常认为Nginx快于Apache但是在如静态资源图片、css、js等文件场景下Apache有自己的优势。在构建高性能服务器时Apache并不是问题所在PHP才是真正的瓶颈。 HTTP服务器性能优化每款HTTP Server程序提供的功能都可以实现优化请求处理和服务内容。优化HTTP Server程序的性能和可扩展性的技术包括 缓存静态文件 将静态文件如图片、css文件、js文件、字体文件等变更不频繁的文件缓存在用户设备上。要实现这样的效果Web Server程序需要添加特殊的响应头信息以便让用户在浏览内容的同时将静态内容缓存到用户设备上。 HTTP持久链接HTTP Keep-alive技术 HTTP持久链接表示一条TCP/IP链接上承载着过多个上下行请求。相比于传统的单链接模式一次请求需要创建一条单独的BS链接的模式而言HTTP Keep-alive技术有大幅度性能提升。优点如下 CPU和内存的负载会减轻。因为同一时刻的打开的TCP链接数变少了后续请求和响应无需打开新链接可以继续基于这些TCP链接发送上下行请求。当TCP链接建立后请求的等待时间就会减少。网络阻塞情况减轻。因为在同一时刻只会有少数的链接保持着。 不足许多服务器有并发数限制当并发数上升到一定程度时程序的性能将大大降低。为了解决这个问题设置链接超时时间便非常必要。设置之后超过设定时间的链接将会自动关闭。 GZIP压缩 将网络中传输的内容进行压缩后再传递可以有效减轻传输负担从而提升HTTP请求的响应速度。Apache和Nginx都支持GZIP压缩大部分的浏览器也都支持GZIP压缩数据的解析。 PHP独立部署服务Apache是以mod_php模块的方式加载PHP的在这种方式PHP与Apache耦合的很紧所有的请求都会由Apache模块处理这会非常消耗机器的硬件资源。我们可以通过让PHP-FPM与Apache结合它们都独立部署通过FastCGI协议互相传递数据。这样Apache只需关注HTTP请求链接即可PHP进程则由PHP-FPM创建与维护。 Nginx本身就是与PHP相互独立的。 当PHP独立服务时Web服务器不必对动态内容进行处理仅仅将请求转发给另外一个服务即可这大大减轻Web服务器的负载能力。 关闭不用的模块 Apache与逐个Nginx都有许多默认携带的模块大多数情况下是用不到的因此最好的方式是关闭不用的模块方法1先将所有的模块禁用并重启服务器然后逐个开启并检查应用程序是否运行正常2将所有模块默认全部开启。然后逐个关闭并检查应用程序是否运行正常剔除不用的模块。通过这个方法可以做一个列表标识 启用或禁用的模块。 Web服务器资源 每个Web服务器都会默认一些全局配置以供使用然而这些设置可能并没有完美匹配服务器硬件情况最大的硬件方面的问题是RAM内存内存越多服务器可处理的请求就越多。 内容分布网络CDNCDN网络通常服务于媒体文件例如图片文件、css文件、js文件和音视频文件这些文件会被缓存在各地的服务器上这些服务器在地域上足够分散当收到请求时CDN网络会选择最适合用户的最近节点将内容下发给用户。 CDN网络的特性 由于内容是静态的不频繁更改因此CDN会将他们缓存在内存中。当某个文件的请求到达时CDN直接从缓存中发送文件这比从磁盘中加载文件并将其发送到浏览器更快。CDN服务器位于不同的位置。每个浏览器都具有向域发送同时请求的限制。通常存在对动态内容的少量请求和对静态内容的更多请求。CDN根据客户的位置决定了内容的地理可用性缓存广泛优化网络中的文件传输。 CSS与JavaScript优化每个Web应用程序都会有CSS和JavaScript文件现在大多数应用程序都包含很多css和js文件用来增强应用的粘度和互动效果。css和js文件越大浏览器需要发送的请求就越多从而容易影响其性能。针对css和js文件的优化方法是 合并将所有的css和js文件分别合并为一个文件。缩小删除css和js文件中所有空行、注释和格外空格这样能够减小文件迟勋提高文件加载速度。 Minify是一组完全使用PHP编写的库支持CSS与JavaScript文件的合并与压缩代码完全面对对象和命名空间可以将其嵌入开发框架中。下载地址注意minify依赖同一作者写的路径转换库 Grunt:是一个JavaScript任务运行器它能够将某些重复的任务自动化避免反复工作。注意Grunt的安装需要Node.js和npm。 全页缓存技术网站的完整页面存储在缓存正为下一次请求提供此缓存页面。如果网站的内容不经常更改全页缓存的效果更好。 Varnish开源Web应用程序加速器在Web服务器软件之前运行但是它必须配置在端口80上这样才能使每个请求到达。基础设施在应用程序流量一次性增加到上千万的用户若在单个服务器上运行性能受到很大的影响。针对程序的可扩展性和可用性可在多个服务器上部署程序。构成部分 负载均衡LB根据每个Web服务器上的负载情况将外网流量以一定的规则分发给Web服务器。Web服务器可以根据需要尽可能多地部署Web服务器它们可以很轻易地连接到LB。数据库服务器用于安装数据库。提升数据库性能  数据库在动态网站中扮演着一个关键的角色所有流入流出数据杜辉与数据库进行交互。因此如果PHP应用数据库没有进行较好的设计或优化其性能将会受到非常大的影响。 MySQL数据库 查询缓存Query Caching 存储引擎 存储引擎又称表类型是MySQL的核心部分负责处理表的操作。MySQL提供9个存储引擎使用最广泛的是MyISAM和InnoDB。 MyISAM 为速度而设计和Select搭配起来使用更好如果表的数据偏向于静态使用MyISAM最好。MyISAM支持表级锁。MyISAM支持全文搜索。MyISAM数据压缩、自我复制、查询缓存、数据加密。MyISAM不支持外键。MyISAM不支持事务。MyISAM支持集群数据库。InnoDB(默认存储引擎) InnoDB是为高可靠性和高性能而设计的适合处理大量数据。InnoDB支持行级锁。InnoDB支持外键。InnoDB支持事务。InnoDB数据压缩、自我复制、查询缓存、数据加密。InnoDB可以用在集群环境下但是并没有完全支持不过InnoDB表可以完全转换为NDB存储引擎这样既可用于集群环境。Percona数据库和Percona XtraDB存储引擎 Percona是免费、开源的数据库对于MySQL完全兼容且提供加强功能可完全代替MySQL并能提供更好的文档、性能、扩展性。Percona由MySQL衍生支持MySQL的所有特性并在此基础上提供更多、更好的性能。Percona使用一种改进的存储引擎——XtraDB它是InnoDB的加强版有更多的特性和更快的速度在现代硬件上有有着更好的扩展性Percona XtraDB在高负载环境下使用内存的效率更高。 Percona只能在Linux系统上使用目前不能在Windows系统上使用。具体安装可参考Percona安装手册 MySQL性能监控数据PHPMyAdmin的status展示MySQL服务器的相关信息和一些统计。 Redis键值缓存存储 Memcached键值缓存存储 调试和分析调试过程中需要知道一个脚本程序消耗了多少资源包括内存消耗、CPU以及执行时间。Xdebug是一种PHP扩展为PHP脚本提供调试和分析信息能够得到错误的 全部追踪信息。同时Xdebug提供与IDE的交互式调试脚本的能力。 与Subline text 3可安装Xdebug client插件 PHP编程最佳实践ComposerPHP依赖管理工具。 Git代码托管和版本控制。 Grunt watchJavaScript任务运行器。 参考 源码下载地址
http://www.huolong8.cn/news/76031/

相关文章:

  • 成都网站建设 招聘公司网站建设费用入什么费用
  • 网站关键词库庆阳吧
  • 外贸建站主机六安哪里有做推广网站
  • 网站设计 站wordpress頂部公告插件
  • 广州做网站市场商品详情页怎么制作
  • 杭州做公司网站西安煤炭建设监理中心网站
  • 做公司网站大概需要多少钱啊虚拟主机怎么设计网站吗
  • 中国建设行业网站中国建设官方网站
  • 建站平台 选择住建局查询系统
  • 58同城推广能免费做网站吗在阿里巴巴上做网站需要什么条件
  • 南宁网站建设公九江网站开发公司
  • sever 2008 网站建设辽宁省建造师执业信息网
  • 好买卖做网站移动互联网站开发与软件开发
  • 网站制作什么巢湖自助建站系统
  • 运城有做网站设计wordpress静态页面
  • 广州网站排名优化报价北京专业英文网站建设
  • 广西省住房和城乡建设厅官方网站网站建设的展望
  • 子凡wordpressseo范畴
  • 顶呱呱集团 网站建设新手学网络运营要多久
  • 啥前端框架可以做网站首页.net网站开发实训体会
  • 网站建设的技术问题不想花钱怎么做网站
  • wordpress 网站显示加载时长网络销售新手入门
  • 网站开发助手家教网站开发公司
  • 青岛行业网站建设电话哈尔滨公共资源网
  • 站长工具短链接生成教学网站模板下载
  • 专业网站的特点做网站有没有前途
  • 紫川网站建设最新国际新闻大事件
  • 有没有做婚车的网站项目定制开发网站
  • 浙江温州城乡建设网站福清哪有做网站的地方
  • 可以做哪些有趣的网站注册公司注册资金多少为好