分类文档:PHP 71篇

再谈PHP与其它语言相比的优点
2021年01月15日 10:30

本文主要涉及开发速度和日常使用的性能需要,也顺便提一下后台语言Node.js。前几天在V2EX看到有篇帖子是对比PHP和Golang,里面提到有人唱衰PHP。我做PHP编程的时间比较长,2009年至今。之前2002年~2009年都是做ASP编程,因为在那个时候,Web语言主要就是ASP、PHP、CGI,后来相继出现JSP、ASP.net,再后来又有了Golang、Python。

在性能方面,在解释型语言里,PHP应该是属于出类拔萃的。PHP的瓶颈,主要是MySQL,所以会给人一种效率低的印象,并且使并发量大为降低,解决的办法是不用MySQL,而且MySQL备份也很麻烦,备份文件是一个比原数据要大得多的庞大的xml文件。PHP的语法和JavaScript这两者其实有95%以上相似,前面已经对比过了,前文1前文2。所以如果是为了追求JavaScript语法,完全不用学习Node.js,PHP和JavaScript的语法两者就高度相似。……

固定链接 | 发表评论(12) | Trackback(0)

PHP VS Excel
2019年12月13日 12:42

最近在工作中需要用到Excel。我发现凡是Excel能够实现的功能,PHP也可以通过编程来实现完全一样的绝大部分的功能。并且,PHP可以随心所欲,更加灵活。

例如需要实现一个功能,当复制一些 公司/商店 名称的时候(一行一个名字),PHP可以批量自动显示数据库里已有的客户地址、电话、联系人,字段间用Tab符(\t)隔开。然后将显示的结果,一次复制到Excel中。否则,如果没有这个PHP的功能,只能一个一个客户名查询,很繁琐。……

固定链接 | 发表评论(11) | Trackback(0)

开发一键Shell命令安装VPS的PHP环境遇到的几个难题
2019年08月31日 12:51

兼容所有的系统,是巨大的挑战,也很可能是不可能完成的任务,只能做到尽可能兼容。这个自编的纯净版一键Shell命令,用了2年多,真的很好用,省去了我很多麻烦。因为我过去只用Ubuntu 12、CentOS 5,所以一直以来只兼容这2个系统。到了要发布的时候,需要兼容大多数的系统。这几天,为了测试,必须用真机重装系统,已经重装不下60次系统,VPS每月只能重装30次,其中有一个本月已经用完30次。

开发一键Shell命令安装VPS环境遇到的几个难题:……

固定链接 | 发表评论(0) | Trackback(0)

第3版的LAMP/LNMP一键安装+优化的Shell命令留念和详解
2019年08月29日 17:59

这个第3版的LAMP/LNMP纯净版的一键安装命令,是这几天重新编写,将会放在Webshu平台。此时已经能够完美兼容Ubuntu 12/14/16/18/19,以及Debian 7/8/9。但是今天发现有个小问题,Debian 9在两家不同服务商的VPS下,有一个VPS完美运行,另一个VPS安装遇到些问题。有可能是问题出在Debian 9.9的apt-get命令必须改为apt,所以今天尝试把这个命令在Linux命令行下设置为一个变量$apx,让其在Ubuntu 18和Debian 9.9下自动变成apt。

即原来的 apt update 命令,变为 $apx update。这种方式在有的系统能运行,有的系统不运行。所以,还是需要再次重构为第4版。因为第3版,以及以前的版本,都是在Linux主机下判断系统类型,然后把所有系统的Shell命令都显示出来,并根据系统的类型、判断挑选出Shell命令。这对于我来说,时间久了,这些Shell程序我都无法一下看懂,因为Shell程序我个人觉得比PHP程序难读10倍以上,尤其是程序较长的时候,一下看不懂的程序,有时候宁愿重构也不想再多花时间分析。……

固定链接 | 发表评论(0) | Trackback(0)

PHP 7.4值得升级(附测试结果)
2019年08月27日 22:24

今天已经基本把Ubuntu所有的系统的LAMP一键安装+优化的shell程序编写完成。顺便测试了一下PHP 5.3、5.5.9、7.0、7.1、7.2、7.3、7.4这些版本的性能差异,让循环程序执行100万次的运行时间太短,看不出差异,所以执行1000万次。不试不知道,一试吓一跳。PHP 5.5的执行速度是5.3的2倍;PHP 7.0~7.3的速度差异很小,PHP 7.4的速度约是7.3的1.8倍~2倍。

环境为Ubuntu、Debian+Apache,测试结果如:……

固定链接 | 发表评论(3) | Trackback(0)

解决PHP 7等web编程语言不报错一例
2019年07月28日 07:07

PHP的开发者必须尽快转到PHP 7平台,因为原来在PHP 5下开发的程序,有很多在PHP 7下都会报错。PHP 5的程序改为PHP 7的写法,工作量是很大的,所以开发者只能一步到位转到PHP 7平台。

PHP 7增强了数据类型;数组与变量名不能同名,如果同名,需要用$a1=array();给数组$a1清空即可解决报错,PHP 5时只要用$a1='';即可清空数组;PHP 7如果直接引用、或者判断符合条件才赋值的变量时,会报错,解决办法是提前声明这个变量,PHP 5时则不需要声明。……

固定链接 | 发表评论(4) | Trackback(0)

XP系统下安装PHP 7的可行曲折方案
2019年07月07日 10:37

因为XP系统下做开发,比Win 7、Win 10节省很多时间,每天至少能节省10-15分钟,时间宝贵,所以仍然无法割舍XP系统。很可能是微软禁止了PHP 7在XP下运行,目前在纯Windows XP下安装PHP 7是绝对不可能的,能试的所有方法我都试了。只能等待第三方开发者,开发一个XP下可运行的Apache+PHP 7的版本。

XP下可以通过安装VMware+Ubuntu/Debian/CentOS来安装PHP 7,但是由于每编写一个PHP语句,都需要用Xftp来上传,再测试,异常繁琐。……

固定链接 | 发表评论(8) | Trackback(0)

常用技术分享:PHP 5和PHP 7在开发中最常遇到的兼容性写法总结
2019年06月30日 11:41

PHP 7引入了强类型,在报错方面比PHP 5严格了很多。所以,很多PHP 5下开发的程序,到了PHP 7会有各种报错、无法运行。其实,只要稍加改动,原来的PHP 5程序就可以兼容PHP 7的语法,但无疑改动的工作量是难以估计的,需要对每个模块都重新测试。这种改动不像前端设计所见所得,程序由于模块数量庞大,可能会有少量改动不彻底而引发bug

服务器版的PHP的php.ini,默认是不显示报错,即display_errors=Off,所以看不到报错。程序开发当中,则必须把display_errors改为display_errors=On,根据报错内容开发、修改程序。……

固定链接 | 发表评论(10) | Trackback(0)

PHP 7.X、PHP的报错日志测试结果记录
2019年06月22日 12:49

PHP 7.X的报错规则比PHP 5.X严格很多。测试结果是为了试验error_reporting(0);能否彻底关闭报错日志,以防止用户的错误日志的增加,测试结果是肯定的。测试平台为Ubuntu 16+Apache+PHP 7.2。共写入这4个php测试文件:

1.php……

固定链接 | 发表评论(2) | Trackback(0)

Feedval程序已经开始修改为PHP 7的写法(Feedval开发实况24)
2019年06月21日 16:17

Feedval目前在PHP 5.X可完美运行。PHP 7.0应该也可以运行,暂不支持PHP 7.1和之后的版本。已经开始全力修改,使其能够兼容PHP 7.1~最新的PHP 7.3。

经过几天的持续调试,我的电脑终于完成PHP 7.X的环境安装+一键还原。昨晚排查出了PHP 5.X和PHP 7.X写法的不同,主要是由于从PHP 7.1开始,其报错规则非常严格。只要一个变量不存在,当调用它时,就会报错。数组的名称,也不能与已有的变量同名(如果有,PHP 7.X必须先清除数组)。这种严格的报错规则,多见于其它的语言。PHP之所以让开发者感到轻松,就是因为无需每次都声明变量。……

固定链接 | 发表评论(4) | Trackback(0)

PHP 5.X和PHP 7.1写法的2个不同(修改需要庞大的工作量)
2019年06月20日 22:42

这几天经过很多波折,终于把Win 10+PHP 7.1的工作平台搭建完成。作为开发平台,Win 10操作系统,在很多方面都远不如XP好用。目前,XP、Win 7都无法安装PHP 7.X。我原来在PHP 5.X编写的程序,在PHP 7.1都无法运行,在PHP 7.0下运行正常。今天经过排查,终于找到了原因。由于写法不同,导致PHP 5.X下编写的程序,无法在PHP 7.1下运行。

目前已经发现的不同:……

固定链接 | 发表评论(4) | Trackback(0)

漫长的PHP 7.X安装之坑的困境详解
2019年06月14日 10:02

因为从PHP 7.1开始,PHP的解释器做了很大的改动,导致原来的很多PHP程序无法在PHP 7.1及之后的版本运行。如果作为为用户提供程序、非自用的开发者,为了争取更多用户,有必要跟进新的平台。经过2天的安装,基本上已经完成了PHP 7.1~7.3的安装。PHP 7.X的安装,没有想象中的顺利。为了完成PHP的开发,我的电脑不得不使用4块硬盘,安装了4个系统。

这4个系统分别是:XP、Win 7、Win 10、XP+VMware+Linux。……

固定链接 | 发表评论(12) | Trackback(0)

博客的优美之处在于记录真实的事情和想法,记录PHP 7.1、HTML 5遇到的困扰
2019年06月12日 10:42

个人的力量无法去阻挡时代的变化,正如房价的变化。本博客这些年来,随着博客的不断撰写,会产生很多新的思考、想法和发现。其中一个重要的发现是,很多事情、技术并不会因为时间的推移,就必然会进步。很多好的技术、观念,都随时可能被遗忘、失传,这样的事情细想一下,数量十分惊人,有可能超过半数

很多人会在潜意识里认为新的技术一定是最好的。只有在这个领域里工作的人,或者多加思考的人,才知道事实并非如此。……

固定链接 | 发表评论(4) | Trackback(0)

必成技术分享:PHP获得服务器本机IP的思路
2019年06月08日 07:40

最近我在Eonval项目开发中需要此功能,但PHP自身无法获取服务器本机IP。想要获取服务器本机IP,有很多种方法,比如需要时我会想这2个办法,都需要调用Linux主机的shell命令来实现。这2个办法都必须使用唯一的这个函数shell_exec(''),它是返回Linux主机的shell结果的所有行,且将结果传给一个变量,再用PHP分析运行结果,从运行结果中提取出服务器的IP地址。

方法1. 免root(所有的CentOS/Ubuntu/Debian主机默认是这个状态),即Apache或Nginx不需要有root权限。程序如:……

固定链接 | 发表评论(0) | Trackback(0)

PHP也会受浏览器兼容性问题影响?
2019年04月01日 07:27

昨天的日志,最后一段提到的PHP绝大多数情况,不受浏览器兼容性的影响。最近开发中,到目前为止我个人唯一发现的不兼容,是一种特殊的场景。域名A的页面,使用iframe调用、或者JS文件包含不同域名(如域名B)的远程文件,需要读取域名B的Cookies时,目前较新的浏览器,都能读取。

但在某些浏览器,例如IE6,则无法读取。项目开发中,只要有一种浏览器不兼容,那么就尽量不使用这种方法。……

固定链接 | 发表评论(8) | Trackback(0)

JavaScript比PHP语句做得好的一个小细节实例
2019年03月31日 08:05

JavaScript这一种古老的语言,是目前唯一的网页前端编程语言,在2018年第1季度竟然排名为世界十大编程语言的第1名(新闻链接),这可能是由于JQuery的兴起。这个排名好像是受欢迎度、市场占有率,就像超级女声一样是通过投票的方式排名,但是排名不代表实力。在开发中,我个人感觉PHP很多方面比JS做得好,虽然语法几乎完全相同,PHP和JS之前我也写过几次对比(例如),它们在开发中的重要性,PHP应该在JS之前,PHP也比JS简洁很多。最近发现一个反例,这一点JS比PHP做得好。

比如获取地址栏。JS只要一个window.location.href,就可以获取整个完整的地址栏,甚至能获得#后面的数据,而且十多年前的JS版本就已经是这样的。PHP获取地址栏相对繁琐,PHP没有像JS的window.location.href一样的方法,只能是获取域名+域名之后的地址,如:……

固定链接 | 发表评论(0) | Trackback(0)

底层技术分享:PHP程序的代码如何加密
2019年03月29日 07:39

很简单,只需巧妙运用eval()函数,这个函数太重要了。方法是把源程序的字符在本机编写一个乱码器批量替换,在项目中做逆向还原,再被eval()函数调用。如果乱码太多的话,可能(可能性微小)会被某些杀毒软件报为病毒,为了避免这个问题,只需将一两个关键的PHP语句进行加密就足够

大多数的工程、成品源程序被解读是没有意义的,因为一是无法逆向还原开发现场的思路,二是解读程序有可能比开发程序花的时间还长。因此,加密与否,很多时候并不重要。……

固定链接 | 发表评论(0) | Trackback(0)

开发中遇到的PHP中的一个重要bug
2019年03月22日 07:47

虽然PHP的确是公认的最好的语言,最近10年的世界TOP 20编程语言(市场份额),PHP一直名列前10名。PHP为什么好呢?个人觉得,好就好在PHP的设计者,把web开发者在编程中能遇到的问题,大部分都想到了,是一种十分完整的语言(在PHP 5时就已经达到这种水平)。大部分问题,他都有了解决方案。所以我们在开发中,会感觉更加得心应手,这是一个优秀的语言具有的特征。且PHP的执行效率,处于相对中等偏上的水平(与Golang、Node.js这些运行更快的平台相比);PHP比另外几个最受欢迎的语言执行效率高。如果程序设计中,没有瓶颈的问题,PHP的效率还是很高的。

昨天开发中,遇到PHP中的一个bug。setcookie函数,如下2行的语句:……

固定链接 | 发表评论(0) | Trackback(0)

PHP语句比JavaScript简短的一个最常用实例
2019年02月28日 06:47

JavaScript(简称JS),几乎是目前唯一的网页前端脚本语言(以前还有个VBScript,现在大部分浏览器不支持)。PHP和JS我之前做过很多次比较,在上手、易学方面,PHP比JS快很多,这是因为PHP能独立做出项目。对于独立的开发者(个人研究,非职场应用),JS基本上不用专门学,是一个水到渠成的过程,会了PHP,就会JS,因为语法基本上一样。

PHP语句比JS简短的一个最常用实例,比如PHP能轻松和HTML混合编写,非常灵活。JS也能用同样的方式,但是多占用了很多字节,比如最常用的输出语句,PHP这样:……

固定链接 | 发表评论(0) | Trackback(0)

PHP6、PHP7关闭magic_quotes_gpc对程序的影响
2019年02月27日 08:01

在PHP5及之前,magic_quotes_gpc默认是开启的。magic_quotes_gpc的作用很微妙,我一直使用PHP5多年,magic_quotes_gpc呈开启状态,平时没有受到任何影响。直到发现PHP的Cookies,如果有'这样的标点符号,在Cookies里,会将这些符号全部转义为\'。查阅了大量的资料,解决的办法是将php.ini的magic_quotes_gpc设置为Off,或者不改变php.ini,在.htaccess里将magic_quotes_gpc设置为Off,方法是在.htaccess里写入:

php_value magic_quotes_gpc Off……

固定链接 | 发表评论(0) | Trackback(0)

PHP重要功能调试小记:time()函数不受date_default_timezone_set()的影响
2019年02月24日 10:29

time()函数可常用于计算2个时间差,例如实现判断一个网页的post过期时间,以防止spam、机器人。date_default_timezone_set()函数用于设定服务器的时区,例如date_default_timezone_set('Etc/GMT-8');为东8区(北京时间)。经过测试,date_default_timezone_set()的设置,对date()函数有效,对time()不起作用。

测试程序如:……

固定链接 | 发表评论(0) | Trackback(0)

项目中的2个算法小集锦
2019年02月06日 11:29

在Eonval项目的开发中,字符串的处理和算法,比数据库关联、数据库设计要简单得多,这样的算法在程序项目中多得不计其数,一个项目下来,可能会遇到几百个这样的算法。尽量地使用数组、strpos()函数来代替循环程序,可以大大提升程序的效率。

比如在项目中,设定数值1、2、3分别代表的是语言:en、cn、tc。en为英语,cn为简体中文,tc为繁体中文(Traditional Chinese)。……

固定链接 | 发表评论(0) | Trackback(0)

底层技术分享:UTF-8/ANSI编码的混用方案终于完成(亦可拟UTF-8编码)
2019年02月01日 13:26

实现这一功能,以前想得太难,其实比较简单。开发中发现,PHP5(及以上的版本)对于UTF-8、ANSI等编码的转换、调用,很完美,所以一个站点完全可以多种编码混用。一个中文字符,在数据库中,UTF-8编码占用3字节,GBK(ANSI)编码占用2字节,因此对于中文页面,ANSI编码可以提高20%~30%的性能,节省相应的流量。

对于个人空间的程序,流量大的网页是博客、微博。所以在将要开发的独立微博Eachval项目,将支持UTF-8、ANSI编码的切换,微博主可以用UTF-8编码,也可以切换到ANSI编码。(为什么在开发初期就一定要支持这个功能?因为这个功能关联的数据库太多,最好一次做好,否则将来改起来工作量不可估量。)……

固定链接 | 发表评论(0) | Trackback(0)

最好的web编程语言?
2019年01月08日 16:01

前几天看到v2ex的一个老生常谈的话题,我挺欣慰的是超过半数的网友都给PHP投票,PHP曾被誉为“Web之王”。我从事了10年的PHP编程,在这之前的7年主要做ASP编程,今天我会给PHP投一票,仍然是我心中最好的web编程语言之一。因为在很多人眼里,哪一种语言的工资最高、哪一种语言最牛就是最好的语言。但在多年的实战者里,PHP却是很多人的最佳选择。

曾有人吐槽PHP使用花括号、条件语句中使用圆括号、变量名使用美元符号$,所以有人更喜欢Python的语法。个人觉得,PHP的花括号、条件语句中的圆括号,可能有点难省略,一旦省略,PHP的解释器将比较难设计这门语言。尤其是花括号,在复杂的大片的程序语句里,如果有很复杂的逻辑关联,如果该语言没有花括号,易读性大减。大片的程序语句里,花括号有助于分析程序里的逻辑关系,所以易读性大为提高。……

固定链接 | 发表评论(3) | Trackback(0)

JavaScript和PHP、Shell(4)
2018年12月05日 07:55

项目中总是需要用到这3种语言,这是第4篇将这3种语言进行对比。在长期的实战中,从语法、易用性、易读性上来看,PHP在这3者中,相对是最简洁的。

JavaScript和PHP,一个是前端(客户端),一个是后端(服务器端)。PHP比JavaScript易学、易读。两者的语法,高度相似。先学PHP,再学JavaScript会容易很多,有一个很重要的原因是PHP能独立实现一个项目,较容易有成就感。JavaScript学了很久,都无法完成一个项目。(当然无法完成,因为JavaScript本身无法执行服务器端的任何数据操作。)……

固定链接 | 发表评论(0) | Trackback(0)

max-width不兼容IE6等浏览器的终极有效解决办法之一
2018年11月27日 09:14

虽然我现在开发的预览是以火狐、谷歌浏览器为主,但是IE浏览器仍然不能忽视。(10年前我开发网页是以IE6为主)

如果把网页的宽度设置为100%,加一个max-width:720px,这种方式对于兼容电脑、手机版网页的效果很显著,特别酷。但昨晚突然发现max-width在IE6下不生效,在网上查阅了很多资料,添加了相关语句后,发现IE6、火狐能生效,但是手机浏览器的宽度又无法适应为100%。……

固定链接 | 发表评论(0) | Trackback(0)

PHP的短标签
2018年11月25日 09:42

Feedval RSS Reader的项目已经从0开始动工,预计这个项目的工作量约是Eachval的1/30以内。在项目写程序之前,我需要先写在线安装程序。以往的程序发布,我是把整站打成压缩包,用户解压缩就完成安装。而这一次,是使用在线安装的方式,优点是安装方便、用户体验好、安装后直接就是最新版本,开发者不需要在每次更新后再打压缩包。

新写的在线安装程序,第一步需要检测服务器环境。有一项是对short_open_tag的检测,它的功能是PHP的短标签。较早期的PHP3,开发者们大量使用<?php?>这样的标签。……

固定链接 | 发表评论(1) | Trackback(0)

HTML VS HTML5;PHP7 VS PHP5;PHP VS PHP+Linux(shell)
2018年11月23日 07:31

从2000年底我家里买了电脑,并学习网页制作、HTML,到现在已经走过了18个年头。这些年里,一些技术、标准一直在变化。比如2001年时,当时有个18岁的人,很有兴趣地给我展示他用PHP3、ASP做的大型网站,并和我谈PHP4的话题,当时很佩服他的年轻有为。那时的PHP3是主流,最高版本为PHP4;如今的PHP版本,发展到了PHP7。

在10年前,PHP5是PHP的最高版本,至今还是很新的。……

固定链接 | 发表评论(2) | Trackback(0)

静态HTML页→PHP→PHP+Linux(PHP+shell)
2018年11月15日 09:36

这是每个人的必经之路。静态HTML页,可以完成个人主页、展示网站,2-5年之内是网页的入门期,在此期间,FrontPage、Dreamweaver都是最好的网页设计、HTML代码学习软件。

一旦过了入门期,应该尽快适应用文本工具编写HTML源代码,彻底放弃FrontPage、Dreamweaver。……

固定链接 | 发表评论(1) | Trackback(1)

完成了新项目的第2个取名
2018年10月11日 23:14

免费独立微博程序的项目名称完成了取名,Eachval,含义是each one at festival,节日里的每个人。这次取名还算顺利,最后的冲刺阶段用了4-5小时,终于完成。

这个项目是运行在每位博主的二级域名上的空间,官方网站是 http://www.eachval.com……

固定链接 | 发表评论(0) | Trackback(0)

1 2 3

下一页 | 末页 (共3页)

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

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

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

Blog存档 Archives

2021年06月(9)
2021年05月(17)
2021年04月(25)
2021年03月(6)
2021年02月(17)
2021年01月(30)
2020年12月(19)
2020年11月(18)
2020年10月(15)
2020年09月(14)
2020年08月(14)
2020年07月(14)
2020年06月(16)
2020年05月(13)
2020年04月(18)
2020年03月(14)
2020年02月(15)
2020年01月(16)
2019年12月(11)
2019年11月(26)
2019年10月(25)
2019年09月(30)
2019年08月(10)
2019年07月(29)
2019年06月(30)
2019年05月(26)
2019年04月(30)
2019年03月(30)
2019年02月(30)
2019年01月(30)
2018年12月(30)
2018年11月(30)
2018年10月(30)
2018年09月(17)
2016年-2017年(9)
2014年06月-09月(10)
2013年 +

2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

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