Php 来自服务器的响应延迟超过24小时-是否可能?

Php 来自服务器的响应延迟超过24小时-是否可能?,php,javascript,ajax,Php,Javascript,Ajax,php:我的问题是关于我想在共享主机的服务器上使用LAMP(Linux、Apache、mysql、php)和html开发的项目 我希望用户在我的网页上的中输入一个数字,单击“获取结果”并获取结果(显示在另一个页面或使用ajax请求-无论什么) 要计算结果,最多需要24小时。 是否有可能编写这样一个项目,让用户的浏览器等待长达24小时?用户的浏览器和共享主机的服务器之间的对话是否有任何限制?我的意思是,它是否被限制在24小时以内 我应该试试这个项目,还是最好使用其他技术来编写它?从技术上讲,是的,

php:我的问题是关于我想在共享主机的服务器上使用LAMP(Linux、Apache、mysql、php)和html开发的项目

我希望用户在我的网页上的
中输入一个数字,单击“获取结果”并获取结果(显示在另一个页面或使用ajax请求-无论什么)

要计算结果,最多需要24小时。 是否有可能编写这样一个项目,让用户的浏览器等待长达24小时?用户的浏览器和共享主机的服务器之间的对话是否有任何限制?我的意思是,它是否被限制在24小时以内


我应该试试这个项目,还是最好使用其他技术来编写它?

从技术上讲,是的,您可以进行ajax长轮询。在响应生成并返回给用户之前,请求将一直保持打开状态,直到您需要它(使用web服务器资源)。不管这是不是个好主意。。。你不能期望一个用户把浏览器窗口打开那么长时间。这只是一个原因。

从技术上讲,是的,您可以进行ajax长轮询。在响应生成并返回给用户之前,请求将一直保持打开状态,直到您需要它(使用web服务器资源)。不管这是不是个好主意。。。你不能期望一个用户把浏览器窗口打开那么长时间。这只是一个原因。

如果您存储输入号码时的时间戳,并在服务器上计算响应,那么在浏览器和服务器上都会更容易


之后,您可以使用ajax轮询检查24小时是否已经过去。在这种情况下,我不建议服务器推送,因为我不希望浏览器打开那么长的时间。

如果您存储输入号码时的时间戳,并在服务器上计算响应,浏览器和服务器上都会更容易


之后,您可以使用ajax轮询检查24小时是否已经过去。在这种情况下,我不建议使用服务器推送,因为我不希望浏览器打开那么长的时间。

如果需要处理表单请求,可以让控制器进行新的计算过程。然后会立即回复用户,让您告诉他们结果将通过电子邮件发送(理想情况下)或在完成后显示在页面刷新上


如果需要处理表单请求,可以让控制器派生一个新的进程来进行计算。然后会立即回复用户,让您告诉他们结果将通过电子邮件发送(理想情况下)或在完成后显示在页面刷新上


从用户体验的角度来看,这并不是真正可行的

虽然客户机可能会等待那么长时间,但您不可避免地会遇到web服务器、客户机浏览器、客户机操作系统以及可能的中间代理服务器超时的问题。TCP的设计目的不是让连接保持那么长的打开时间


相反,您应该接受请求并返回头
HTTP/1.0 202 Accepted
,以指示请求已成功并正在处理,然后发送推送通知(如电子邮件)和/或让用户检查可以定期刷新的状态页。

从用户体验的角度来看,这实际上是不可行的

虽然客户机可能会等待那么长时间,但您不可避免地会遇到web服务器、客户机浏览器、客户机操作系统以及可能的中间代理服务器超时的问题。TCP的设计目的不是让连接保持那么长的打开时间


相反,您应该接受请求并返回头
HTTP/1.0 202 Accepted
,以指示请求已成功并正在处理,然后发送推送通知(如电子邮件)和/或让用户检查可以定期刷新的状态页。

Yikes。我觉得我更喜欢电子邮件,而不是让浏览器24小时运行。我相信这个项目是为我自己或我的朋友准备的。这些更改将使用ajax实时显示在页面上。不要等待24小时的响应(可能会在某个地方出现超时),在计算完成后将其保存在服务器上,并使用ajax定期检查。如果有实时更新,可能只需每隔一段时间更新页面一次结果,并让用户随时访问。换句话说,您的服务器可以每x分/秒/小时写入一次结果,用户可以通过请求更新的结果而不是整个过程来获取更新的信息。是的,您做错了;)更好的方法可能是通知用户,当结果准备好时,他们将收到一封电子邮件,并在电子邮件中向他们发送指向结果页面的链接。祝你好运哎呀。我觉得我更喜欢电子邮件,而不是让浏览器24小时运行。我相信这个项目是为我自己或我的朋友准备的。这些更改将使用ajax实时显示在页面上。不要等待24小时的响应(可能会在某个地方出现超时),在计算完成后将其保存在服务器上,并使用ajax定期检查。如果有实时更新,可能只需每隔一段时间更新页面一次结果,并让用户随时访问。换句话说,您的服务器可以每x分/秒/小时写入一次结果,用户可以通过请求更新的结果而不是整个过程来获取更新的信息。是的,您做错了;)更好的方法可能是通知用户,当结果准备好时,他们将收到一封电子邮件,并在电子邮件中向他们发送指向结果页面的链接。祝你好运
if (isset($_POST['form'])) {

    // Form validation, etc.

    if ($pid = pcntl_fork()) {
        echo 'Your results will be ready eventually...';
        exit;
    }

    // Process the input here in detached daemon process.
}