回复#26 @lincanbin :
这个你多虑了,就算是微信网页版(PC)这种规模,也是每隔25秒发起一个AJAX长轮询: https://webpush.wx2.qq.com/cgi-bin/mmwebwx-bin/synccheck
所以对于虚拟主机小站,完全不用考虑HTTP头和重复认证这点开销.
真要虚拟主机友好,又何必用Memcached呢?直接轮询MySQL内存表不就好了么?
HTTP长连接(AJAX) => Apache(PHP) => MySQL(内存表)
回复#17 @lincanbin :
嗯,看得出来,你还是热衷于使用PHP原有的那套同步方案来做功能.
轮询Memcached倒是压力不大.
虽然可行,但是对高并发可能不友好.
Swoole + Redis PubSub 这种异步的编程思想在IM上还是更适合的.
基于这套方案,有兴趣搞个WebIM和棋牌游戏都是可以的.
回复#15 @lincanbin :
假设使用HTTP长连接的用户foo给使用WebSocket的用户bar发送一条私信,你是怎么推送消息给用户bar的?也就是你的消息中间件用的是什么?我用的是Redis的PubSub.
回复#12 @lincanbin :
我现在开发的问答社区,全部都是基于Swoole实现,包括消息通知.
不过消息通知没有使用WebSocket,仍然使用HTTP协议.
HTTP长连接(AJAX长轮询)兼容性更好.
Swoole内置HTTP和WebSocket等协议,还是非常简单易用的.
当然,PHP-CLI服务对虚拟主机部署不友好,的确是事实.
WebSocket服务用的是什么?
不会是Node.js的SocketIO吧?
如果是,建议改成PHP技术栈中的Swoole.
Swoole内置了WebSocket服务实现,
只需用PHP填充几个事件回调函数完成自己的逻辑,
开发成本不会比SocketIO高.
问答社区中,对回答进行评论还是有必要的.
比如知乎就支持对回答进行评论.
知乎为了改善浏览体验,支持评论翻页,支持查看对话.
因为问答社区大多限制一个用户只能对一个问题进行一次回答,而论坛则能回答多次.
简单的场景下,也可以用一些文本表格.
回复#125 @lincanbin :
插入表格,bbcode和markdown都不方便.
如果要提高表格输入效率,可以辅助一些可视化弹出层操作来生成bbcode标签.
回复#117 @lincanbin :
我尝试换个头像,貌似不成功。
最近我也在做一个社区项目,不过我做了用户名昵称检查:
<?php // 检查昵称格式 $username = trim($req->post['username']); if ( mb_strlen($username, 'UTF-8') < 2 || mb_strlen($username, 'UTF-8从头开发一个项目,真是一种乐趣。
中小型站点就别上独立的全文检索引擎了,直接用MySQL的FullText全文索引就好,中文分词直接用不依赖词典的二元分词法,简单有效.