我想开始使用websocket连接到PHP套接字服务器。该服务器应每隔一段时间检查数据库中是否有更改,然后将更改发送回客户端。因此,当连接客户端时,只要客户端(在这种情况下是网络浏览器)在页面上,连接就应该保持打开状态。
然后,服务器应该每隔一段时间检查数据库,并在需要时发回数据。我知道问题不在于websocket(除了不是所有主流浏览器都支持它)。我主要关心的是PHP。我想用PHP创建服务器,但我可以随时打开与PHP代码的连接吗?
间隔时间怎么样。通常,在C#.NET exe应用程序中,我只会创建一个计时器。如何在PHP中实现这一点??
如果这一切都是可能的,我可以简单地在Apache Web服务器中运行我的PHP代码吗?
通常,如果要用PHP编写套接字服务器,则需要通过命令行运行它。你想考虑的是:
你需要访问套接字,而共享服务器上通常没有,所以你必须给自己买一个VPS。
您可能希望在服务器上设置一个文件,该文件将在每次重新启动服务器时自动启动PHP脚本。通常,这是通过将运行PHP脚本的shell脚本放在/etc/init.d中,然后将指向shell脚本的符号链接放在/etc/rc5.d中(假设这是默认级别)来完成的。
您也很可能不希望/不需要运行Apache,除非您还计划将此服务器用作文件服务器。如果您仅将其用于套接字服务器,则可能需要安装PHP-CLI。这将节省您的内存。
如果您试图在连接到服务器的用户之间进行实时交互,则可能根本不希望涉及数据库。套接字服务器将有一个连接到套接字服务器的所有订阅者的列表,因此当其中一个订阅者向您发送消息时,您可以立即将该消息发送回所有连接的订阅者,而无需在慢速数据库中存储任何内容。或者,如果你能负担得起的话,你会想把信息保存在内存中
对于并非所有浏览器都支持socket.io的套接字,有一种解决方案。基本上,我相信它会在支持的情况下尝试设置浏览器网络套接字,但如果不支持,它会启动Flash套接字连接。无论哪种方式,你都可以使用相同的界面与之交互
您可能还需要考虑另一种语言来创建套接字服务器。PHP并不是为这种类型的东西而构建的。Javascript是一种更好的语言,尤其是在考虑可伸缩性的情况下。Node.js是一个库,它可以让你很容易地构建一个套接字服务器,并且可以扩展得多。