热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP教程系列3写PHP程序前必须知道的5点信息

在开始写第一个PHP程序之前,我们需要了解文件、硬盘、内存、CPU、操作系统。这些都是平时耳熟能详的东西,通过熟悉的事物来打开编程的大门将更容易。文件为什么要将文件放在第一个位置来

在开始写第一个PHP程序之前,我们需要了解文件、硬盘、内存、CPU、操作系统。这些都是平时耳熟能详的东西,通过熟悉的事物来打开编程的大门将更容易。

  1. 文件

    为什么要将文件放在第一个位置来介绍?因为文件就是代码,无论是编译前的还是编译后的代码,都是文件。图片是代码,视频是代码,一切电脑上存在的东西都能理解为代码,只是打开的工具不一样。.py文件需要Python打开,.php文件需要PHP打开,.html文件需要浏览器打开等等。代码并没有多神奇,随处可见。都能用记事本打开,只是『肉眼』这个解析器能不能读懂罢了。

  2. 硬盘

    硬盘是我们存放代码的载体,这里需要对硬盘的速度有个概念。硬盘读写的速度基本是 45M/秒 (不同硬盘有差异,读写也有差异)。一些很大的项目,比如Yii和Laravel源代码都有60M。理论上每个请求都要加载这60M代码,只加载就要1秒多,为什么几毫秒就能返回结果呢?这是我们需要思考的问题。当然有些PHP项目有几百M,但并不影响项目的性能,所以并不是项目文件越大就越慢,这也是需要知道的概念。

  3. 内存

    内存可以理解为读写速度更快的硬盘,我们很多时候会把通用的代码和数据放内存中,这样读取和写入速度会更快,减少因为硬盘读写导致的耗时。当然内存资源相比硬盘更昂贵。在Web开发中,读写频繁和IO密集型操作肯定会导致内存消耗增加。比如我们常说的单机1万QPS,大多时候瓶颈就在内存。还有用空间换时间也是常用的编程技巧,就是使用更多的内存来加快计算。

  4. CPU

    CPU主要用来做计算,单个CPU的计算速度已经足够快,快的内存都来不及提供数据。比如内存一秒能读取10G数据,CPU一秒能计算100G数据,往往内存会拖慢CPU,所以才有了一级缓存,二级缓存,三级缓存,这些缓存是比内存更快的存储器。因为操作系统设计的关系,一个线程只能使用一个CPU核心,为了充分利用CPU的多个核,就需要通过编程来实现,比如通过多进程单线程(Nginx)、单进程多线程(Memcached)等。在Web编程中,只有遇到密集型的计算才会考虑CPU的瓶颈问题,比如加密解密,图像渲染,机器学习等。其他大部分场景下CPU都不会成为优先考虑的因素。

  5. 操作系统

    操作系统我们每天都在用,它管理着硬件并提供了一个生态环境让软件稳定运行,比如Android,iOS,Windows,Linux等等。编程时刻都要与操作系统打交道,比如进程管理,进程间通信,内存申请,堆栈使用,基于不同的操作系统对代码做不同的优化等等。这是一门很大的学问,夸张点来说正是有了操作系统才有了后来编程语言的百花齐放。

介绍了如上信息之后,我们需要带着问题去编码,这样学习起来能事半功倍。

  1. 对于一个50M大小的PHP项目,如何保证项目不会随着文件的增加导致性能下降?关键词,按需加载
  2. PHP程序如何利用多核CPU?关键词,php-fpm
  3. PHP程序如何调用操作系统的进程管理方法,生成进程,管理进程,进行进程间通信?关键词,进程间通信(与编程语言无关)

在编写PHP程序的这些年里,无论解决多大的难题都离不开这5个基础知识点,整个Web生态圈都围绕着这些点在不停的优化。下一篇文章我会带着第一个问题来写PHP代码。

如果你喜欢我的文章,请关注我的博客 PHP教程系列3-写PHP程序前必须知道的5点信息

喜欢编程的朋友可以关注我的个人公众号,保证每周三篇原创。
《PHP教程系列3-写PHP程序前必须知道的5点信息》 程序员编程日志


推荐阅读
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 构建LNMP架构平台
    LNMP架构的组成:Linux、Nginx、MySQL、PHP关于NginxNginx与apache的作用一样,都是为了搭建网站服务器,由俄罗斯人lgorsysoev开发,其特点是 ... [详细]
  • yii2 绑定框架事件
    后端开发|php教程php,yii2后端开发-php教程我想要添加自定义代码处理yii2框架的Application::EVENT_BEFORE_REQUEST时触发的事件,但是不 ... [详细]
  • Monkey《大话移动——Android与iOS应用测试指南》的预购信息发布啦!
    Monkey《大话移动——Android与iOS应用测试指南》的预购信息已经发布,可以在京东和当当网进行预购。感谢几位大牛给出的书评,并呼吁大家的支持。明天京东的链接也将发布。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 负载均衡_Nginx反向代理动静分离负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分
    nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解 ... [详细]
  • centos6.8 下nginx1.10 安装 ... [详细]
  • centos php部署到nginx 404_NodeJS项目部署到阿里云ECS服务器全程详解
    本文转载自:http:www.kovli.com20170919ecs-deploy作者:Kovli本文详细介绍如何部署NodeJS项目到阿里云ECS上, ... [详细]
author-avatar
milkchocolate1981
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有