共享主机的实时通知(PHP、MySQL、Yii)

Posted

技术标签:

【中文标题】共享主机的实时通知(PHP、MySQL、Yii)【英文标题】:Real time notifications on shared hosting (PHP, MySQL, Yii) 【发布时间】:2012-06-30 17:56:49 【问题描述】:

我目前正在开发一个需要推送通知样式系统(如 Facebook 通知)的网站。我希望在发生诸如“X 将您添加为朋友”之类的事件时通知用户...

我一直在研究我的选择,但它们似乎非常有限,因为该网站将托管在共享托管平台上,因此我的访问权限等受到限制。

1) 查看长轮询彗星样式 - 因为我无法在服务器上运行 Python,所以我唯一的选择是 php 用于服务器脚本,但是由于线程消耗,这可能不是一个非常可扩展的选项。

2) WebSockets - 这些看起来很棒,但由于浏览器支持有限,它似乎还不太合理..

那么 - 有没有人在共享托管平台上完成了这项工作?我宁愿不用像 Pusher 这样的服务。

非常感谢!! :)

PS - 我正在使用 Yii 框架 - 任何考虑到这一点的解决方案都会更好

【问题讨论】:

【参考方案1】:

使用Ratchet,它是PHP的WebSocket。

Ratchet 是一个松耦合的 PHP 库,为开发人员提供 在客户端之间创建实时、双向应用程序的工具 和基于 WebSockets 的服务器。这不是你祖父的互联网。

这是一个helloworld 示例。

【讨论】:

【参考方案2】:

对 chrome、firefox、opera 和 ie10 使用 html5 SSE(服务器发送的 dom 事件)

对于旧版本的 IE,使用 iframe 加载作为后备。

所有这些技术都应该适用于任何类型的共享主机,因为它们不需要任何类型的服务器端设置。

【讨论】:

【参考方案3】:

https://***.com/a/1086448/1063333:

执行此类通知的常用方法是轮询 服务器(使用 ajax)在给定的时间间隔(可能每隔几秒), 检查是否发生了什么事情

【讨论】:

谢谢,但我已经读过了。它并没有太大帮助,因为它需要很大的超时时间,而且这在共享主机上是不允许的:( 这不应该是一个问题,如果你轮询你不需要长时间的超时。 @LucFranken 肯定是通过轮询来进行的,尽管它非常消耗资源?不过我想,共享主机上的任何实现都非常消耗资源.. 如果你让它变得智能和缓存,我预计不会有太多问题。所以不要每秒为每个用户触发复杂的查询。无论如何,当您使用共享主机时,我希望您不会同时托管大量用户。 您可以将新内容/实时更新的分发卸载到第 3 方解决方案。见leggetter.co.uk/real-time-web-technologies-guide#hosted-client

以上是关于共享主机的实时通知(PHP、MySQL、Yii)的主要内容,如果未能解决你的问题,请参考以下文章

使用 yii2 的实时应用程序

在 php yii2.0 中集成 android firebase 通知

php 使用PHP和YII进行跨源资源共享

实时通知的最佳方法

yii-log-target - 监控系统异常且多渠道发送异常信息通知

Yii2/PHP:为 InfluxDB 和 MySQL 抽象数据库访问