是否可以每秒向Laravel发布数据?

时间:2017-08-11 02:15:56

标签: php android laravel real-time laravel-5.4

我正在尝试建立一个跟踪系统,在Android应用程序中使用Laravel将GPS数据发送到Web服务器。我已经阅读了有关如何进行实时应用程序的教程,但据我所知,大多数指南只能实时接收数据。我还没有看到像每隔一秒左右发送数据的例子。

我认为将数据每秒发送到Web服务器并不是一个好习惯,特别是当您已有一千个用户时。我希望有人可以建议如何或者我该怎样做才能采用这种方法?

另外,我只想尽可能地使用没有任何NodeJS服务器的Laravel。

2 个答案:

答案 0 :(得分:1)

快速发送

首先,您应该估计服务器容量。从fpm开始,如果您在0.01秒内有32个php进程并且服务器处理每个发布请求,则可以将容量粗略估计为每秒N = 32 / 0.01 = 3200个请求。

所以只需要快速处理。如果您的请求处理0.1秒,则在单个服务器上拥有大量客户端的速度太慢。启用opcache,可以减少5倍的时间。将数据插入mysql是一个缓慢的操作,因此您可能需要将其解决以使其更快。比如说,将它添加到快速缓存(redis \ memcached),当缓存已经包含1000个元素或缓存创建超过0.5秒之前,将其作为单个插入查询移动到数据库。

随机发送

大多数智能手机可能都有正确的时间。因此,当下一秒开始时,它可以导致数千个同时请求。因此,首先0.01秒服务器将处理1000个请求,接下来0.99秒它将睡眠。在移动代码处插入0-0.9秒的随机延迟,该延迟对于每个设备都是固定的,并在首次安装或请求时定义。它将统一加载服务器。

答案 1 :(得分:0)

你应该考虑至少2个非常重要的事情:

  • 客户的互联网消费
  • 服务器容量

如果您有一千个用户,每秒将意味着您服务器要处理的很多请求。

您应该考虑使用一些推送技巧,如此@Dipin answer中所述:

当涉及到服务器时,您应该考虑使用队列系统来处理这些作业。 Like described in this article可能有一些软件包提供集成,以便使用Firebase或GCM为您处理。

祝你好运,希望有所帮助o /