Author: admin

被swoole坑哭的PHP程序员

首先说一下对swoole的理解:披着PHP外衣的C程序。很多PHPer朋友看到swoole提供的强大功能、外界对其的崇拜便跃跃欲试的安装、调 试其demo、编写新功能,然后兴奋的奔走相告。

本文主要记录一下学习swoole的过程、填过的坑以及swoole究竟有多么强大!

首先说一下对swoole的理解:披着PHP外衣的C程序。很多PHPer朋友看到swoole提供的强大功能、外界对其的崇拜便跃跃欲试的安装、调 试其demo、编写新功能,然后兴奋的奔走相告。没过几天当你按照自己的理解继续用swoole时,发现代码并没有按照自己的预期运行,然后开始破口大 骂,什么破东西呀,代码跟demo基本一样,为啥运行不通呢?什么狗屁work、task、共享内存、ipcs、异步,各种问题涌现,然后迅速去查官方文 档,发现文档中竟然对这些并没有提及,只是简单的介绍怎么使用,此时几乎对swoole丧失希望。…

    

PHP7性能新特性与Swoole

最近PHP官方终于发布了传说中的PHP7,虽然只是alpha版。PHP7号称是新一代的PHP,官方开发组对Zend引擎底层做了大量修改来优化PHP的性能。可以说PHP7这个版本的主题就是性能优化

在过去PHP一直以开发效率快著称,而语言本身的性能较差(当然比Python,Ruby还是要快一些的)。普通的Web网站都是IO密集型的程序,瓶颈在MySQL上,所以体现不出PHP的性能劣势。但在密集计算方面比C/C++、Java等静态编译语言差几十倍甚至上百倍。另外使用设计非常复杂的开发框架,如Symfony、Laravel等,程序性能也会明显下降。…

        

毫秒必争,前端网页性能最佳实践

你愿意为打开一个网页等待多长时间?我一秒也不愿意等。但是事实上大多数网站在响应速度方面都让人失望。现在越来越多的人开始建立自己的网站,博客,你的网页响应速度如何呢?在这篇文章中我们来介绍一下提高网页性能的最佳实践,以及相应的问题解决方案,让站长或者即将要成为站长的朋友了解如何去测试和提高网站响应速度,对自己的网站更有信心。

最佳实践

最佳实践我们引用的来自yahoo前端性能团队总结的35条黄金定律。原文猛击这里。下面我们分门别类将每条的关键点总结一下。…

        

PHP7革新与性能优化

有幸参与2015年的PHP技术峰会(PHPCON),听了鸟哥(惠新宸)的关于PHP7的新特性和性能优化的分享,一切都令人感到激动。鸟哥是国内最权威的PHP专家,他的分享有很多非常有价值的东西,我通过整理分享的PPT和收集相关资料,整理为这篇解读性质的技术文章,希望能给做PHP开发的同学一些帮助。

    

MySQL5.6时间类型timestamp和datetime有了重大改变

在MySQL5.5里(或更老的版本MySQL5.1)timestamp类型一个表里只允许一列字段拥有自动插入时间和自动更新时间、或只允许一列字段有自动插入时间,另一列字段不能有自动更新时间。

但从MySQL5.6里,打翻了这一传统理念,以上条件均可以出现,并且datetime类型也拥有了timestamp类型的功能。

以下是演示:

这是MySQL5.5的(timestamp类型一个表里只允许一列字段拥有自动插入时间和自动更新时间):…

swoole 开发注意事项–by桶哥9月13号优才分享ppt

swoole里的对象是长驻内存的,所有象连接池 、配置项、单例等都是持久化的。

编写swoole程序要注意内存控制,像一定要及时释放资源,像mysql连接,文件读写,socket 连接等都要及时关闭,这是和普通php不一样的地方。static数据 也要及时清除,另外不建议在swoole里面用超全局全量,因为swoole是多进程的,所有进程间的变量不能共享,如果一定要使用,建议在框架里把超全局变量封装好。

swoole不适合做cpu密集计算型项目。

对mysql连接特别要注意,因为是长连接,所以时间长了,再去执行mysql查询就会出现 mysql has gone away错误, 解决办法是查询前采用ping 检测,如果连接断了,就重连。

还有要注意的是tcp粘包处理。

热加载  http://wiki.swoole.com/wiki/page/20.html 。

数据共享方法:可以用swoole table, apcu,yac ,redis,memcached.

 

•1)  Mysql Gone Away

原因:mysql server主动关闭

转载请注明:来源:http://blog.p2hp.com/archives/2298…

        

用Zephir开发PHP扩展.

Zephir  是一种类似于PHP的语言的高级语言,简化了PHP扩展的创建和可维护性. zephir扩展输出C代码 ,因此能被主流的C编译器编译和优化,如 gcc/clang/vc++.

它是优秀的Phalcon团队为开发第二版本框架所编写的新兴语言,其语法和PHP 非常相信,开发扩展非常方便,执行效率上据说是与C不分上下, 他的编译流程如下:Zephir -> C -> bin.

项目地址 https://github.com/phalcon/zephir  官网http://zephir-lang.com/

本文 主要分享Zephir在ubuntu下的安装与使用方法.…

        

编程珠玑番外篇-Q 协程的历史,现在和未来

本文原发于《程序员》2014年11月刊,发表时略有修改。

计算机科学是一门应用科学,几乎所有概念都是为了理解或解决实际问题而生的。协程 (Coroutine) 的出现也不例外。协程的概念,最早可以追溯到写作 COBOL 语言编译器中的技术难题。

从磁带到协程

COBOL 是最早的高级语言之一。编译器则是高级语言必不可少的一部分。现如今,我们对编译器了解,已经到了可以把核心内容浓缩成一本教科书的程度。然而在六十年代,如何写作高效的语言编译器是那个时代绕不过的现实问题。比如,1960 年夏天,D. E. Knuth 就是利用开车横穿美国去加州理工读研究生的时间,对着 Burroughs 205 机器指令集手写 COBOL 编译器。最早提出“协程”概念的 Melvin Conway 的出发点,也是如何写一个只扫描一遍程序 (one-pass) 的 COBOL 编译器。众多的“高手”纷纷投入编译器书写,可见一门新科学发展之初也是筚路蓝缕…

协程:异步与并发

协程(coroutine)的概念已经广为人知,这里就不多说了。作为用户态主动调度的执行单位,协程可以避免传统多线程程序的上下文切换、调度和锁竞争等开销。

前一段时间一个小师弟过来面试,提到在阿里实习时,为了方便的编写高并发长连接程序,调研发现了了一个java的协程实现。我于是便问他结果如何,用这个真的能够达到你的目的吗?他就答不出来了,只是在机械的重复「协程相比回调更适合异步编程」之类的。

很多人都有这个误解,认为有了协程,就可以用同步程序的方式,写出异步的程序,原先同步的程序和第三方库,也会自动变成异步的。为什么说这是个误解呢,因为要写出有异步效果的程序,只有协程是不够的,还需要有底层IO的支持。在发生IO时,要将IO操作交给异步实现去执行,并让渡出协程的执行权,由调度去调度执行其他协程。…

        

协程和异步

摘要: 本文介绍协程的基本概念,以及协程在异步IO编程模式里起的作用——大大简化异步回调的实现与逻辑处理。

什么协程

协程这个概念在计算机科学里算是一个老概念了,随着现代计算机语言与多核心处理器的普及,似乎也有普及之势。协程是与例程相对而言的。

熟悉C/C++语言的人都知道,一个例程也就是一个函数。当我们调用一个函数时,执行流程进入函数;当函数执行完成后,执行流程返回给上层函数或例程。期间,每个函数执行共享一个线程栈;函数返回后栈顶的内容自动回收。这就是例程的特点,也是现代操作系统都支持这种例程方式。

协程与例程相对,从抽象的角度来说,例程只能进入一次并返回一次,而协程可能进入多次并返回多次。比如说,我们有下面一段程序:…