秒会+实战PHP程序设计培训(2)

王志勇 发表于 2026年05月10日 08:04

此栏目的 第1篇 发布于2021年,距离现在已经4年半了。这个技术传播的计划,由于多种原因,未能快速上线,或者说应该是被迫中断。当初想要成立这个计划,其积极的一方面是能让所有的读者,一定都能在3天内就能从0编写博客程序、论坛程序,实际上不用3天。那么,这些编程的配方,我是怎么得来的呢?纯属是很多年、365天全年无休,每天盯着电脑屏幕8~10小时以上得来的。

现在任何行业,人们都深度相信科班出身。当然,科班出身确实有很多好处。比如现在的三甲医院的骨科大夫,几乎都是博士学历。因为,三甲医院的骨科招聘要求,就是只招博士学历。这种特殊的重要科室,对于资质有极高的要求。然而计算机行业,除非是在类似华为、富士康大厂从事手机主板、电脑主板、路由器、各类通讯设备硬件、电路设计、集成芯片、驱动程序的开发,实战中对于计算机知识有极高的要求,相对来说,纯软件的开发,应该要比硬件当中的软件开发容易许多。

互联网的所有产品,就是属于纯软件的开发。相对于上述提到的硬件中的软件开发(例如电路设计、驱动程序),纯软件的开发的实战门槛确实低很多,并且能在相对短的时间里得到技术上的成效。

大家肯定有一些人是计算机专业毕业,或者自己的同学是计算机专业毕业的。那么,计算机专业毕业的人,有多少人是从事计算机开发呢?应该是比较少吧?

我有2位同学,都是计算机专业毕业。但都没有从事计算机开发,一位从事销售,一位做了计算机老师。

所以,纯软件的实际开发,对于学历、是否是科班,没有要求。另一个原因,计算机专业的专科、本科的课程,实在是太难了,其专科、本科的学习量,至少等于2个英语专业

计算机开发 VS 骨科治疗
这2个领域,有相同之处,也有相反的地方。相同的是都需要技术的积累,经验的积累。不同的是:

1. 骨科治疗,不允许出错,看病判断需要快速精准;

计算机开发,开发的过程其实是自动学习的过程、自动纠错的过程,因为程序开发,是一个海量调试的过程,每写一小段程序,都需要立刻测试运行结果,如果有错误会无法运行,后台能自动显示是在哪行出错,然后逐步排查写错的地方。

2. 骨科、内科、牙科、肿瘤科等医学专业,需要扎实的专业知识,学成之后,治疗的过程相对较为短期,最多是一次从事几个小时的手术;

计算机开发,初期不需要多少技术的积累,直接就能上手,计算机专业学到的知识,未必能用得上。而在实际的开发中,计算机开发的周期是相当长的,需要实现的功能众多,工作量十分庞大,可能需要每天工作10小时,连续几个月~一年多才能完成一个项目。

3. 医学学成之后,变现容易;计算机开发变现很难,因为软件开发出来的产品大多是免费的,即使你的产品也能做到最好,如何找到赢利点?

技术传播计划,困难重重
这个计划是十分振奋人心的,几年前当初有这个想法,是因为我自身要完成一个项目,经历过相当多的障碍。但是,一旦这个技术传播计划开展,这个项目是一定能成功的。

但这种项目,是属于变卖家当的项目。免费做不行,收费做也不行。

编写资料,可能会花费很多时间。比如,2003年的时候,我在这个栏目,写的一篇现在看似普通的网页教程,当时就花了7个小时,写到天亮。

学习web编程最快的方法
不是看编程的书,因为编程书确实有很多重要的知识,但实际应用中,99%以上都用不上。特别是在web编程项目的开发,例如博客、论坛程序,很多书讲的核心方法,实际上是错误的。

学习web编程最快的方法,就是在网上搜索文本数据库的留言板程序,不用找以MySQL为数据库的程序,然后逐步删除大部分的HTML语句,剩下的就是核心的程序。

仔细查看这些程序,如果长时间用电脑看不方便,就把这些程序打印下来,反复看,慢慢找到核心程序的片段。

这些最核心的部分就是这几块:

1. 打开文本数据库。
2. 写入数据库;
3. 调用数据库、提取数据库里的字段;
4. 翻页程序。

至此,所有的编程技术已经学完了,你可以立刻开发任何的web项目了!!!之后,有不会的函数,99%以上都能在百度搜索到,平时在电脑上不断建立笔记,这是快速自学的方法。

所有的编程语言,都是这个学习过程,比如PHP,JSP,Java,Golang,Python。

核心详解(这一小节的价值相当于7000元的课程,请反复阅读本小节)
“PHP是世界上最好的语言”,并不是玩笑,开发的时间越长,越能体会到这一点。这是因为如今的PHP运行速度极快,在Linux主机安装也是最容易的。

因此,开发就以PHP为例。

1. PHP打开文本数据库,核心程序:

$f1='a1.php'; //或$f1='a1.txt';
$o1=file($f1);
$o1=str_replace("\n",'',$o1);
$j1=count($o1)-1;

其中,a1.php就是数据库,第一行写入<?exit();?>,用来禁止用户直接查看数据库。
$o1=file($f1); 这一行是打开数据库。
$o1=str_replace("\n",'',$o1); 这一行必加,不能省略,去掉每个字段多余的回车符。
$j1=count($o1)-1; $j1的值代表字段总数,这个值会常常用到,作用例如使用循环程序读取整个数据库的每一行,例如这样会用到这个$j1的值:

for ($i=1;$i<=$j1;$i++){}

2. 写入数据库的程序:

$z=fopen($f1,'w');
fputs($z,'<?exit();?>'."\n".$e1);
fclose($z);

说明:fputs()这一行,是写入数据库的内容,其中,写入<?exit();?>的意思是让数据库的第一行写入这句,禁止用户直接查看数据库。

后面的$e1,就是要写入的内容。$e1前面的.(点),是连接符,是PHP的语法

后面的."\n",这个是十分关键的用法,作用是写入一个行,这个行的作用是隔开每个字段,这个行就相当于PHP里的chr(10)字符,而不是chr(13)的回车符。

请注意,这里再举例说一下.(点)连接符的使用方法,PHP的连接符是.,且只能用一个点,不能连续两个点,例如.."\n"会运行报错,示例:

$a1=$b1.$b2; //√正确
$a1=$b1.'content……中文内容'.$b2; //√正确
$a1=$b1..$b2; //×错误,会报错,这是在编写中特别容易出现的常见错误

写入数据库的核心原理是:每次写入新的数据库,或者修改相应的数据库,请注意,并不是旧的数据库不动,然后只更新少量的数据库,而是:把整个数据库先进行读取,然后把所有数据传给$e1,最后写入$e1的过程。

简单地说,写入数据库,并不是只更新部分数据库,而每次都覆盖整个数据库

上述的这段程序,已经足够了,我所有的开发项目都是基于这个原理。如果您想了解更多的实例,请在百度搜索fopen()函数。

3. 调用数据库
如本小节的第1部分,已经打开数据库,我在项目中都把它缩为一行,称为模块,为了提高可读性,因为PHP语法允许用分号代替回行,2个语句之间是可以不回行的,例如这样:

$f1='a1.php';$o1=file($f1);$o1=str_replace("\n",'',$o1);$j1=count($o1)-1;

这些文本数据库,是一行就是一个字段,例如,读取行2行,就是:

$a1=$o1[1];

因为PHP规定,第1行是[0]行。所以,第2行就是$o1[1]。

3-1. 字段的设计:
例如auiou.com本博客的程序,评论区的数据库,这样设计字段:

用户名
网址
时间
留言内容
留言编号
用户IP地址(用于备查)

一共6个字段,多条留言,用循环程序来提取数据库,步长为6,也就是在循环程序当中,是每逢6,就跳跃一次,程序如:

for ($i=1;$i<=$j1;$i+=6){}

在博客页的留言区域,这样提取字段:

for ($i=1;$i<=$j1;$i+=6){
$a1=$o1[$i]; //$a1的值就是用户名
$a2=$o1[$i+1]; //$a2的值就是网址
$a3=$o1[$i+2]; //$a3的值就是时间
$a4=$o1[$i+3]; //$a4的值就是留言内容
}

这些值,如何传给HTML页?例如:
<?
for ($i=1;$i<=$j1;$i+=6){
$a1=$o1[$i];?><?=$a1?><?}?>

其中,<?=$a1?>这句就是HTML的输出语句。

PHP+NoSQL的实战设计
MySQL通常是在一个程序里,只打开一个MySQL文件。而NoSQL是一个程序里,同时打开多个文本数据库,也就是打开多个微小的切片,通常需要打开3~8个数据库切片,这样会比MySQL快了1000倍以上。

PHP慢,瓶颈是由于MySQL。

PHP重要语法:双引号和单引号的区别
大多数的编程语言,双引号和单引号没有区别。PHP有区别,原则上就是尽量使用单引号。双引号也是PHP语言十分人性化的一点,因为在双引号里居然能写入变量。例如PHP语句:

echo "$e1 …… $e2"; //这样能正常运行

最好改写成这样:

echo $e1.'……'.$e2;

上述这2者写法的区别,就是PHP会在双引号里检索所有的变量,在大流量的环境下会影响效率,但这个影响平时没有差别,只有亿分之一以下的区别。

但需要注意的是,双引号的前后,不能紧跟中文字符、全角字符,否则无法检索,例如这样是错误写法:

echo "$e1中文内容$e2"; //错误写法

应该改写成:

echo $e1.'中文内容'.$e2;

用户提交数据的交互
比如用户留言,这类是属于数据较多的情况,HTML页的<form>必须用post方法,服务器端的PHP页就用$_POST来接收,PHP 7或以上,必须在$_POST之前加个@,防止用户提交的数据为空,会报错,在PHP 5的时代不会报错(大约从PHP 5.6开始加入了这个报错),PHP页接收post的方法,例如:

abc.php文件写入:

$a1=@$_POST['name1']; //这是核心方法
$a2=@$_POST['name2'];
$a3=@$_POST['name3'];

实战中,必须把用户提交的<符号替换为&lt;,否则,用户提交的留言内容里如果有PHP程序、或HTML、JavaScript,会直接运行,这是巨大的漏洞,这样替换:

$a1=str_replace('<','&lt;',@$_POST['name1']);
$a2、$a3同理。

如果用户提交的数据较短,是查询功能,就用get方法,PHP程序用$_GET来接收,方法完全同上述的post,只是把$_POST替换成$_GET,例如

$b1=@$_GET['name11']; //这是核心方法
$b2=@$_GET['name12'];
$b3=@$_GET['name13'];

同样,这样来加强安全:
$b1=str_replace('<','&lt;',@$_GET['name11']);

程序开发的瓶颈
搜索引擎技术。搜索引擎技术,其实不是特别高端的技术,但是在程序开发的初期,就必须会这个技术,因为这是项目中十分核心的需求,无法避开。

用户注册程序、用户登录程序、电子邮箱登录,如何能够快速检索到用户名?

传统的技术,是都写入到一个SQL文件当中,可能大部分编程书都是这样写的,互联网上很多平台都是这样做的。

但是,当用户注册量达到100万,这个SQL文件是相当庞大的,会造成登录、或者注册的时候特别慢。只要有用户在登录、或者注册的时候,都会调用这个巨大的数据库文件,从而使整个站点特别慢,整个站点特别慢的现象在以前的某论坛程序十分常见,现在就不多见了。

解决办法,只有自己设计这个数据库,也就是设计分词,分布成小的数据库。这样,登录的速度,在服务器后台提高了至少1万倍,乃至10万倍……因为PHP自身的运行速度,在这里用循环程序,我逐一做过测试,如这里的多平台测试结果,PHP运算100万次的加法,消耗0.054微秒,还是2019年时的中低端服务器。

因为1秒=100万微秒,那么我们用数学来计算,这台PHP 7.4的服务器,1秒钟可以计算多少次呢?

计算公式如,1÷0.053919076919556×100万=18.54631156783228×100万≈1850多万次。

即,PHP 7单核一秒钟至少可以运行1850万次;而PHP 7的运行速度,大约是PHP 5的5倍,PHP 5的运行速度大约是单核1秒钟370万次。

程序本身的运行速度是如此之快,读取SQL文件的速度却慢了很多,所以任何语言慢的原因,例如PHP、JSP,瓶颈在于SQL数据库上

互联网数据传输、建web站的瓶颈
最大的瓶颈是https,在前面已经写了很多次的https专题

https是web开发的最大瓶颈,因为https并没有提高速度,反而是降低了速度,并且SSL的安装一年比一年难。

特别是从事web编程的人,最能体验到https的弊端:除了安装、续期十分繁琐,还影响速度。

互联网上,完全可以不需要https。目前,https唯一的作用其实就是防止G隔开F隔开W,防止web页中有某个敏隔开隔开词,导致web被自动屏蔽。

不应该强制每个站点都去使用https,因为https和安全完全没有关联,某些浏览器现在强制给http打上“不安全”的标签,目的其实就是借着安全的名义,推销SSL产品,每年可以产生十分丰厚的收益。

SSL的作用就是某种安全认证,类似于国内的I隔开C隔开P备隔开案。SSL的这种安全认证实际上不具有权威,因为给钱就能认证。

Apache和Nginx哪个好?
现在大部分用户,服务器用的是Nginx后台。如前文《为什么我一直用Apache而不用Nginx?》

为什么大部分人用Nginx?广为流传的原因是Nginx速度更快、进程多。

通过前文《PHP多版本、多平台的速度测试结果(超完整)》的多次对比,PHP+Apache和PHP+Nginx,PHP的速度没有任何区别。

在Linux主机的后台,使用Linux的ps命令查看进程,可以看到Apache同样可以自动出现很多的进程,并且可以手动设置Apache的最大进程数。

或许在并发数很大的情形,例如上千人同时在线,Nginx有可能会更快。但美中不足的是,Nginx不像Apache是真正支持.htaccess的;Nginx的伪静态只能在配置文件里写入规则,且这个规则是全局的、对整个站点有效。

站点的流量达到一定程度,如果速度遇到瓶颈,到时候再尝试测试使用Nginx,Nginx和Apache同时使用,使用多台服务器。

简单地说,Apache和Nginx主要的区别就是,Apache是真正支持.htaccess的,能够极其灵活地实现伪静态

结语
到了本期,整个编程技术在某种程度上,已经完全结束了,就是这么简单。或许有的读者能受到很大的启发,或者有的读者看完本文,还是感觉和没学一样。

如果我在没有学会编程之前,看到这样的教程,我也会是后者。

因为我尚未有足够的时间,做全解的保姆级教程、视频教程。即使是出了保姆级教程、视频教程,至少也需要几个小时的视频内容,才能说完,而制作视频需要花费用户看到的视频的时长20~50倍的时间。

也就是用户看到1小时的视频,我至少需要花费20小时~50小时才能做完,因为需要前期撰稿,录制当中有说错的地方、卡壳的地方,需要重录、剪辑,后期需要反复看、反复修改。

如果是没有从头到尾读,而是跳着看本文的读者,可能会问,视频在哪里?

没有视频,这里是用视频做例子。阅读本文就已经足够。下一步,想要快速学会的读者,尽快在本机安装Windows+PHP+Apache。因为程序开发的调试是海量的,尽快实战才能尽快学会。

如果想更快学会,就是需要什么程序,强制自己去写。

1条评论:
1   自由勇 2026-05-10 08:48
更新:
PHP+NoSQL的实战设计
PHP重要语法:双引号和单引号的区别

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (46周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2026 auiou.com All rights reserved.
此Blog程序由王志勇编写