相关疑难解决方法(0)

请求和响应处理之间的HTTP断开/超时

假设以下场景:

  1. 客户端正在向服务器发送HTTP POST
  2. 请求有效且已由服务器处理.数据已插入数据库.
  3. Web应用程序正在响应客户端
  4. 客户端满足超时并且看不到HTTP响应.

在这种情况下,我们遇到以下情况: - 客户端不知道他的数据是否有效并且插入正确 - Web服务器(rails 3.2应用程序)没有显示任何异常,无论它是否在apache代理后面

我找不到如何在HTTP文档中处理这种情况.我的问题是:

a)客户应该期望他的数据可以处理吗?(然后尝试例如GET请求来检查数据是否已经提交)

b)如果不是(a) - 应该服务器检测到它吗?是否有可能在铁轨中做到这一点?在这种情况下,可以改变变化.在这种情况下,我希望从铁路应用中得到一些预期,但没有......

apache tcp ruby-on-rails http disconnect

12
推荐指数
1
解决办法
1970
查看次数

如何在网页上制作进度栏以进行熊猫操作

我已经搜寻了一段时间,却想不出办法。我有一个简单的Flask应用程序,它需要一个CSV文件,将其读入Pandas数据框,将其转换并输出为新的CSV文件。我已经成功上传并成功使用HTML进行了转换

<div class="container">
  <form method="POST" action="/convert" enctype="multipart/form-data">
    <div class="form-group">
      <br />
      <input type="file" name="file">
      <input type="submit" name="upload"/>
    </div>
  </form>
</div>
Run Code Online (Sandbox Code Playgroud)

单击“提交”后,它将在后台运行转换一段时间,并在完成后自动触发下载。接受result_df并触发下载的代码如下所示

@app.route('/convert', methods=["POST"])
def convert(
  if request.method == 'POST':
    # Read uploaded file to df
    input_csv_f = request.files['file']
    input_df = pd.read_csv(input_csv_f)
    # TODO: Add progress bar for pd_convert
    result_df = pd_convert(input_df)
    if result_df is not None:
      resp = make_response(result_df.to_csv())
      resp.headers["Content-Disposition"] = "attachment; filename=export.csv"
      resp.headers["Content-Type"] = "text/csv"
      return resp
Run Code Online (Sandbox Code Playgroud)

我想添加一个进度条,pd_convert从本质上来说这是一个熊猫应用操作。我发现该方法tqdm现在可用于熊猫,并且它具有progress_apply而不是的方法apply。但是我不确定是否与在网页上制作进度条有关。我猜应该是因为它可以在Jupyter笔记本上使用。如何pd_convert()在此处添加进度栏?

我想要的最终结果是: …

python ajax flask pandas tqdm

10
推荐指数
1
解决办法
553
查看次数

高效地重新加载数据/将数据从服务器推送到客户端

在将数据从Web服务器重新加载到前端时,我正在寻找"走的路"(即最有效,最常用,最普遍接受的方式).在最终的应用程序中,我将有几个输出字段,其中必须写入数据,例如:

在此输入图像描述

在最终应用程序中,数据流将彼此不同.这些行必须从服务器重新加载新的最新数据.

我一直在考虑使用Ajax请求来像每秒更新,但必须有另一种方法来做到这一点.Ajax请求将导致大量数据流量.此外,当使用Facebook聊天时,您不必每秒钟等待,几乎立即收到聊天.但是,当我使用Mozilla Firefox的开发人员工具时,我没有看到任何Ajax轮询请求.这让我想到是否会有不同的方式来做到这一点.

我查看了Node.js,但看起来我的主机无法实现.

我听说有人在谈论Ajax Push,我应该使用什么?如果是这样,你能给我一个基本的用法例子吗?

如果没有,那么当拥有多个必须在一秒钟内重新加载的数据流时,会有什么方法呢?

要求是速度低数据流量.因此,我认为不能连续轮询服务器,因为这会产生巨大的开销.

我认为它没有任何重要性,但我在后端使用PHP5.3,在前端使用jQuery 1.9.1的JavaScript.

javascript php client-server comet stream

8
推荐指数
1
解决办法
2万
查看次数

当多个用户正在查看记录并且1个人更新记录时,如何通知其他记录更新?

在我的项目管理应用程序中,我想解决多个用户查看相同任务记录的问题,其中一个或多个更新一些任务数据,而其他人正在查看它.


这是一个场景......

用户#1查看任务#1用户#2视图任务#1

现在,用户#2更新了任务#1描述

用户#1现在正在查看任务记录,但是他的视图显示了不同的过时描述,因为用户#2刚刚更新了它!更糟糕的是,他可能想要自己编辑描述,这将完全覆盖用户#2的描述更新.


这是问题的一个例子.只需添加更多用户,问题就会倍增!

理想情况下,我会使用套接字或Pusher.com等服务,在任何用户进行更新后立即更新所有用户的数据.然而,这个项目将在数百台服务器上运行,并且就服务器要求而言功能有限,因此套接字甚至像Pusher这样的服务都是不可能的!

解决方案的另一个想法是基于Twitter的作用.如果您查看人员Twitter页面,并且他们在您加载页面时发布新帖子.它会显示一条通知消息DIV,告诉您有多个新帖子,并为您提供一个链接,点击重新加载包含最新帖子的帖子流.

在此输入图像描述

我相信类似的方法可以适用于我的项目.如果用户在查看该任务记录时对任何任务数据进行更新.它将在任务模式窗口上显示通知消息,告知用户任务数据已更新,并且他们应重新加载任务.

为了完成这项工作,我知道需要在某个时间间隔内进行一些AJAX请求.

然后,该AJAX请求需要比较在任务记录上进行的上次更新的时间戳,并将其与查看任务记录的用户开始查看它或从上次重新加载任务的时间进行比较.

我觉得我的逻辑虽然错过了一块拼图吗?这一切都是正确的还是我错过了什么?

有人可以解释我是如何做到这一点或告诉我,我的想法是否正确?

我知道,简而言之,我只需确定任务上次修改时间戳是否在其他用户开始查看任务之后.在某些时候我觉得用户的时间也应该更新?

UPDATE

我完全忘记了Stack Overflow在问题和答案上做了这个确切的任务!当您在SO上查看页面并更新答案时,它将显示一条通知消息,告知您重新加载答案并提供重新加载答案的链接.这就是我想要做的!

StackOverflow使用Web套接字执行此操作,但在我的应用程序中,这是一个在许多不同的服务器配置上使用的插件,我不能使用套接字.我试图用AJAX实现类似的结果.即使是每隔30秒发出一次AJAX请求来修改任务时间并将其与另一个进行比较以确定用户是否应该重新加载任务数据也适用于我的情况

在此输入图像描述

javascript php mysql

8
推荐指数
1
解决办法
237
查看次数

如何显示加载百分比以及如何在没有javascript的情况下执行此操作?

我想在PHP中创建类似于加载器的东西,所以我使用了这段代码:

<?php 
$x=1;
while($x<=100) {
   echo "Loading: $x %<br>";
   $x++;
}   
?>
Run Code Online (Sandbox Code Playgroud)

这样它将显示从"加载1%"到"加载100%".但是,这将导致所有出现的一个在新线出现后不会消失.因此,我想知道如何使新行显示并且旧的消失,并且这在页面加载后开始,因此用户将能够观看实际加载的加载器从1%到100%.

更新:我知道我应该使用JS和/或Ajax来实现它,我只是想知道是否有办法在PHP中也这样做:)

javascript php loops loading polling

7
推荐指数
5
解决办法
2万
查看次数

HTTP流和服务器发送事件有什么区别?

我的理解是HTTP流式传输涉及客户端发送HTTP请求,然后响应随时间发送的请求,允许服务器基本上推送到客户端.在我所看到的情况下,SSE似乎按照相同的原则运作,但更为正式化.这接近正确的理解吗?

我看到了这些问题,但他们并没有直接回答我的问题.

HTTP:流水线,保持活动和服务器发送事件之间的关系是什么? 什么是长轮询,Websockets,服务器发送事件(SSE)和Comet?

我还查看了这个https://www.html5rocks.com/en/tutorials/eventsource/basics/#disqus_thread 教程来设置SSE,看起来我想象的是如何设置HTTP流.

http node.js http-streaming server-sent-events

7
推荐指数
2
解决办法
1109
查看次数

如何在PHP/Windows中异步任务结束时通知用户

考虑下图:

工作流程

思念

  1. 用户可以执行单个文件/批量上传(我知道HTTP规范),批量我的意思是有人在视觉上能够一次发送多个文件.
  2. 图像上传服务旨在为每个发送的文件创建(图像处理器)子进程.

问题

  1. 那么客户端 - 服务器通信的哪种方法最适合从这些子进程发送回客户端的通知?
  2. 什么是创建子进程的最佳方法?我已经读到了proc_open,curl方法.我没有得到如何使用消息队列(如果它适用的话).

笔记

只是告诉我我正在使用Windows OS(Windows Server 2008)和XAMPP

php windows asynchronous publish-subscribe

6
推荐指数
2
解决办法
1116
查看次数

没有 Websockets 的即时消息系统的最佳方式

我有一个网络服务器,目前正在从主机租用。他们不允许 webrtc 或 node.js 或类似的东西。

我有一个使用 PHP/SQL/Ajax 的消息传递系统(当用户查看消息线程时,它每 60 秒获取一次新数据)但这似乎不是即时的,而且如果有很多用户,它似乎对服务器来说不是很方便在...上。

所以,我的问题是:有什么方法可以实时更新我的​​用户数据,而不必不断请求新数据,也不必使用 websockets?

我也想通过通知和评论来实现这一点,所以有很多 ajax 脚本每 x 秒请求一次数据似乎不是一个好主意。

php mysql ajax

6
推荐指数
1
解决办法
2165
查看次数

春天的简单推送通知

我有一个与招聘信息相关的项目.顾问或雇主在我的网站上注册,然后开始发布工作.我想为所有用户制作推送通知.当顾问或雇主发布工作时,所有在线用户必须得到通知,说明雇主已经发布了此工作,而没有任何页面刷新jquery setInterval或超时.

我正在使用Spring框架.我搜索了解决方案,但一无所获.我想知道Spring是否在其最新版本中提供了WebSockets.这可能与WebSockets有关吗?

我想要一个合适的资源,以便我可以在我的网站上实现它.

spring spring-mvc spring-websocket

5
推荐指数
1
解决办法
1万
查看次数

Rails中服务器发送事件的可伸缩性如何?

我正计划编写一个Rails应用程序,其中多个用户将使用ActionController :: Live和Puma通过服务器发送的事件将更新的信息推送给他们.我已经编写了一个测试应用程序,它看起来效果很好.对于我正在做的事情,SSE比WebSockets更有意义,因为大多数用户只是"倾听"而且SSE比设置websockets-rails更简单,这也取决于Faye(在这种情况下我只是自己编写)代码在Faye之上).

我想知道的是Rails中服务器发送事件的可扩展性如何?这是在我将使用Puma的前提下,Puma为每个连接到EventSource的用户创建一个新线程.潜在地,这个应用程序的目标是有可能同时连接数十万用户,但是Puma的默认线程限制是16.有什么理由我不能将线程限制更改为200,000?

ruby multithreading ruby-on-rails server-sent-events puma

5
推荐指数
1
解决办法
2483
查看次数