最近想写一个Adroid版的即时通讯app,刚好对PHP也会一些,想问下大家PHP适合做即时通讯的服务端吗?有什么优劣之处吗?
回复内容:
swoole!不用解释!! 前段时间裸写了一个PHP部分基于Socket
iOS部分是用的SocketRocket
主要就是PHP监听端口等待客户端请求,并对请求做出相应的处理
客户端则按照连接-登录-发送&接收消息的模式来
1、客户端请求连接,服务端给予该连接一个index,返回连接成功
2、客户端检测到连接成功后,发送身份信息到服务端登录,若是信息正确,服务端将该账号信息与连接index绑定,返回登录成功
3、客户端对某一id账号发送聊天信息,服务端将该聊天信息保存到数据库,同时检索该接收方是否有与之对应的连接index,有则发送聊天信息,接收方会监听到该信息并响应。如果不在线则push notification。同时也会返回发送成功的信息给发送方,以便确认发送成功。
用是能用,服务端经常挂掉,后来还是加RESTful后备方案。。。。 哈哈,我们项目上就是用的GatewayWorker写的聊天模块。 等你实现了一个即时通讯的后端后,估计你也没欲望写即时通讯的app了,绝对是看见就吐的程度。
php即时通讯服务端可以采用workerman,是一个高性能的php socket服务器框架。
在workerman 的基础上又有GatewayWorker,TCP长连接的应用框架,简化你的工作量。
不过也就是个地基,还要你自己实现一大堆东西来建房子。
如果是为了研究的话,可以写写看。
如果你的中心是做出app来,还不如用这些bass服务。
例如:
环信-即时通讯云领导者
LeanCloud
都有即时通讯服务提供,接入SDK调调方法就可以了,专心于自己的业务。
这些服务商都是有免费版本的,用户少的话基本上不用收费。 以我用php的情况来看,感觉轮询问题不大,数据库操作会是瓶颈,我没做过只是觉得。我用第三方野狗做过感觉 还可以。 必须workerman的GatewayWorker
支持多协议、分布式部署、热更新
例子文档非常全 如果你要问能不能,答案是能。实际项目中合不合适要对比,要看项目资源,要看团队的选型,还要看领导的心情。你这么问,想必你肯定做过调研比如java,对它们各自的优势有大致了解。
根据的经验,我的答案是值得尝试使用php!反正是你自己写,也熟悉的,何不放开撸。 php在消息主动推送那里应该不行
需要客户端轮训询请求 检测是否有新的消息 请求服务器端 然后服务器端响应 因此app需要定时请求服务器 时间的取舍不好做 短了代价太高 长了新消息不及时
可以用一般的java socket就可以 发送udp包 原生socket几句代码就够了 指定地址 指定端口 后台跑一个service监听端口 服务器端写好相应的接受收
nodejs 对socket已经封装了 通信更好写
我的回答可能还有一些错误 自己做过这些 不对的地方欢迎大家指正 做出来了就合适,做不出来就不合适,有些事情吧,你不去做,我不去做,就没人了,要知道,你我都不是个看客,而是时代的参与者 绝对可以,而且很靠谱。最近使用PHP做了两个聊天的项目,一个是APP,一个是H5。我用的是workerman的chat案例改写的,文档很充分,案例也比较多。

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。

在PHP中,trait适用于需要方法复用但不适合使用继承的情况。1)trait允许在类中复用方法,避免多重继承复杂性。2)使用trait时需注意方法冲突,可通过insteadof和as关键字解决。3)应避免过度使用trait,保持其单一职责,以优化性能和提高代码可维护性。

依赖注入容器(DIC)是一种管理和提供对象依赖关系的工具,用于PHP项目中。DIC的主要好处包括:1.解耦,使组件独立,代码易维护和测试;2.灵活性,易替换或修改依赖关系;3.可测试性,方便注入mock对象进行单元测试。

SplFixedArray在PHP中是一种固定大小的数组,适用于需要高性能和低内存使用量的场景。1)它在创建时需指定大小,避免动态调整带来的开销。2)基于C语言数组,直接操作内存,访问速度快。3)适合大规模数据处理和内存敏感环境,但需谨慎使用,因其大小固定。

PHP通过$\_FILES变量处理文件上传,确保安全性的方法包括:1.检查上传错误,2.验证文件类型和大小,3.防止文件覆盖,4.移动文件到永久存储位置。

JavaScript中处理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。1.??返回第一个非null或非undefined的操作数。2.??=将变量赋值为右操作数的值,但前提是该变量为null或undefined。这些操作符简化了代码逻辑,提高了可读性和性能。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3汉化版
中文版,非常好用

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

禅工作室 13.0.1
功能强大的PHP集成开发环境