如何在PHP7中安装mysql扩展

PHP是最流行的web脚本编程语言,目前全球有超过81.7%的服务器后端都采用它,然而它的运行效率一直广受诟病,为了提供PHP的运行效率,Facebook甚至开发HHVM,用来把PHP代码转换成字节码以提高其效率。为了对抗HHVM,2015年10月PHP7正式发布,相对于PHP5,PHP7有非常大的性能提升,关于其和HHVM性能的对比,可以查看鸟哥的PHP7 VS HHVM (WordPress).

相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可能看到过这样的提示”Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in”。所以在以后的程序中,为了保持兼容性,要尽量减少使用mysql扩展用于数据库连接。 …阅读更多>>

PHP用户登陆限制的实现

哆麦询盘管理系统的开发过程中,需要了这样的问题:出于信息安全的考虑,希望给每个能进入系统的人员一个账户,而不是所有人共用一个账户,并且一个账户同时只能一人登陆。刚开始的做法是登陆加锁,当用户登陆之后,对此用户进行标记,若此用户未下线状态下进行第二次登陆尝试,则禁止其登陆。这样做就解决了单账户多用户同时登陆的问题,但是实际操作中,却遇到了更大的问题:用户登陆过程中对其进行了加锁,则用户离开时就必须要进行解锁操作,而很多用户离开网站的习惯是直接点击浏览器的关闭按钮,这就导致无法解锁,最终导致用户正常登陆也受到限制。
PHP用户登陆限制的实现
…阅读更多>>

PHP内存耗尽错误分析

最近有人跟我反映主机上一个wordpress插件的使用过程中经常会出现错误,打开了php的dispaly_error功能之后,发现其报“Fatal error: Allowed memory size of 35389440 bytes exhausted(tried to allocate 1406507 bytes) in xxxxxx on line xxx”,意思是致命错误,内存被耗尽了。Google上搜索了一下,网上有很多这样的问题,答案也都一样,更改php的内存限制,把php.ini中的memory_limit改为更大的数值。

但是这里有一个很大的问题,php允许访问的内存大小是35389440字节,而实际要分配的只有1406507字节。为什么要分配的内存比实际允许访问的内存小还会引发致命错误呢?

PHP内存耗尽错误 …阅读更多>>

PHP输出缓冲及其应用

缓冲(buffer)是为了协调吞吐速度相差很大的设备之间数据传送而采用的技术,用来存放缓冲数据的区域叫缓冲区,在计算机科学领域,当数据从一个地方传送到另一个地方时,缓冲区被用来临时存储数据。与缓冲相似的一个技术是缓存(cache),它们都是为了解决数据存储和传输速度不同而带来的问题,不同的是,缓冲主要在写时使用,而缓存主要用来在读时使用。

PHP缓冲

如上图,是一个简易的缓冲区模拟图,左端入口的数据具有单个输入体积小,速度快,数量多,但右端输出数据具有体积大,速度慢的特点。如果没有缓冲区,很容易造成数据堵塞,有了缓冲区之后,当数据填满缓冲区,再统一输出,则可以大大减少系统负担。 …阅读更多>>

协程与yield

协程,又称微线程或纤程,是一个比进程和线程更加轻量级的解决方案,现代编程语言基本上都支持。那么协程究竟有什么特点,它是如何运作的呢?
协程与yield
进程和线程之间的关系我在这篇文章中做了一下比较分析。线程是程序的运行流,所有指令从头到尾按顺序一一执行,进程则是包含线程的容器。在单核CPU中,永远只有一条线程在运行,当然也只可能有一个进程运行,由操作系统内核负责进程和线程的切换。而协程是属于用户空间的,操作系统对其一无所知,由用户自己去做调度。显然用户自己调度比通过使用一个中断让操作系统调度会快很多,这就是协程快的秘诀了。 …阅读更多>>

HTTP协议,浏览器缓存和网站速度优化

在计算机和网络的世界里,小到CPU,大到Internet,缓存无处不在。个人认为,缓存策略主要解决两个问题,第一个是解决不同设备IO速度不同的资源等待问题,第二个是解决相同资源重复传送的资源浪费问题。例如最常提到的CPU的三级缓存,就是为了解决CPU计算速度快,而读取内存速度慢导致CPU等待的问题。而我们上网的过程过,浏览器对已经请求的资源进程缓存,则属于缓存策略解决的第二个问题。本文主要分析一下HTTP协议,浏览器缓存和网站速度优化。

HTTP缓存 …阅读更多>>