一直想做一个在线聊天的程序,不免搜集一些资料。对于实时通信,目前流传广泛并且已经成熟的技术是ajax长轮询(具体介绍请百度,不是本文主要内容),但它毕竟还是有缺陷的。html5为我们带来了一种新的通信方式web socket。作为php程序员,自然要在服务端写好socket服务器程序喽,特此推荐几篇与php socket编程有关的文章及相应介绍。

  1. php socket讲解与实例

    这是一篇翻译的文章,在网上烂大街了,一直没找到原文地址,随便找了个地址。这篇文章介绍了如何利用socket扩展编写服务端程序和客户端程序,挺不错的。

  2. PHP socket.这篇文章也是介绍socket扩展的,但是更接地气,容易理解。

  3. php-socket-programming

    关于php socket编程网上流传最多的就是利用socket扩展进行编写,而这篇文章介绍了另一种php内置的流处理的socket编程方式,让人眼前一亮。不过注意,文章中用到的stream_copy_to_stream这个函数会保持连接,无法断开,终止脚本后客户端才能显示收到的数据(至少我做实验时是这样,原理不明),可以使用fwrite代替。

  4. HTML5新功能WebSocket的学习与备忘-PHP版

    上边3篇文章只是让你了解了php的socket编程,但是真正要开发php的socket服务程序还得看这篇文章啊。这篇文章介绍了websocket使用的协议,并有完整的响应请求的代码。

总结:

我在网上找到的最早的利用socket扩展进行编程的文章是02年的,之后的文章也大同小异,可见这种方法是多么古老。而第3篇文章里提到的流处理方式我从网上找到最早的记录是6年前,也就是07年。相较而言,第二种方法更简单易行,符合本人的味口啊。

然而,在编写php的socket服务器的时候,socket扩展似乎更为合适。网上有一些websocket的php服务程序库,它们也是利用socket扩展进行通信,并封装了底层的通信过程。或许,在不久的将来,php官方会推出用于与websocket进行通信的扩展包。