apisearch-io/react-socket-middleware-finite-server

此软件包的最新版本(1.0.0)没有可用的许可证信息。

1.0.0 2018-01-08 12:42 UTC

This package is not auto-updated.

Last update: 2023-11-08 05:19:15 UTC


README

这是我们为ReactPHP Socket项目创建的中间件软件包。在让这个世界变得更美好的道路上,我们遇到了ReactPHP。我们的生活彻底改变了。我们发现ReactPHP可以使您的项目成为一个极快的服务。

因此,为了帮助他们一点,我们在其中添加了一些由我们团队创建的中间件类。您可以在他们的 网站上 找到更多关于ReactPHP项目的信息。

Build Status

安装

您可以通过composer安装此软件包。

composer apisearch-io/react-socket-middleware-finite-server

有限服务器

您的服务器应该进行多少次迭代?这可能是一个奇怪的问题,但请记住,在每次服务器迭代之间,使用的内存可能会永远存在。这是您的责任,使这种场景变得罕见,但现实并不总是最完美的。

因此,为了清除所有这些永远存在的内存,我们应该考虑的最佳行动是杀死线程。然后,您应该考虑使用像 Supervisor 这样的线程管理器来确保线程始终被重新创建。

我们引入了FiniteServer,一个n次迭代的服务器。这个服务器的工作方式与其它服务器完全一样。实际上,这是一个简单的包装器,在n次迭代后,服务器将自行关闭。就像一个自我优雅的自杀行为。

这个包装器是通过使用一个名为$iterations的额外参数创建的。

$server = new FiniteServer($socketServer, 1000);

优雅的有限服务器

如果服务器本身想要杀死您的服务器,会发生什么?例如,当缓存更改并希望服务器尽快提供新功能时。在这种情况下,您有几种选择。

  • Supervisor服务重启 - 如果监督器配置相同,那么这似乎是最糟糕的选择。所有进程都将停止并重新启动。如果有任何线程正在服务,它将被杀死,不会提供服务。

  • 手动杀死进程。与上一个选项相同,但没有监督器。相同的线程效果。

  • 使用Finite Server,并等待线程自动死亡。如果您期望在生产环境中进行实时更改,那么您应该添加一个较低的迭代次数,或者一个较高的生产请求数。都不是有效选项。

使用此实现,新的部署可能如下所示

  • 拉取项目
  • 清除缓存
  • 触摸(文件/)

这个包装器是通过使用一个名为$file的额外参数创建的。

$server = new GracefulFiniteServer($socketServer, '/tmp/socket_xxx.tmp');