PHP提交表单超时的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP提交表单超时的问题相关的知识,希望对你有一定的参考价值。

不知道有木有兄弟遇到这样的问题,情况是这样的:
提交方式是POST,提交一些短的字符串没问题,但是一旦内容长度超过了255貌似就出错了。不是php超时时间限制的问题,也不是网速的问题,和数据库也没关系,做了两三年PHP还从来没有遇到过这样的问题。之前都没有这种情况的,就是最近两天才开始出现。
另外复制党和不懂装懂的人就不要来回答问题了,分数是不会给你们的。
超时报错:
503 Service Unavailable
Connection timeout

出现这种情况是由于您的网站超过了iis限制造成的
由于2003的操作系统在提示IIS过多时并非像2000系统提示“链接人数过多”,而是提示"Service Unavailable",出现这种情况是由于网站超过了系统资源限制造成的,主要是程序占用资源太多。
比如同样是100人在线的论坛,雷傲论坛所占的资源就是PW论坛所占资源的10倍以上;另外,一些死循环程序,或者不优化的程序都会占用太多的系统资源,而系统资源明显是有限的。不过WINDOWS2003的操作系统,各网站之间是以独立进程运行的,不会相互影响。
如果一个网站的程序占资源太多或者发生太多的错误,系统日志就会提示:“应用程序池 'xxx' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误,或者提示:应用程序池 'xxx' 超过了其作业限制设置。这时,访问这个网站就会提示:Service Unavailable。一般系统会在30秒左右恢复正常,多刷新几次就能正常访问了。
另外,如果你的网站当前访问人数过多,超过了系统的iis连接数限制,也会出现Service Unavailable的提示(win2k主机下出现连接过多就会提示:连接过多,请稍后再试;而win2003的主机刚直接提示:Service Unavailable)
参考技术A 在文件头加上:
set_time_limit(0); //设置运行时间。0表示无限。

注意这语句需要加在页面没输出前。本回答被提问者采纳

带有表单验证的表单提交预览 (PHP)

【中文标题】带有表单验证的表单提交预览 (PHP)【英文标题】:Form submission preview with form validation (PHP) 【发布时间】:2016-12-04 11:59:26 【问题描述】:

这听起来像是一个愚蠢的问题,所以我先道歉。

我有一个 PHP 表单,它的动作发布到自己,所以我可以做一些验证以确保选择文本框、几个复选框和几个单选按钮。在确认没有表单错误后,我需要让用户预览他们输入的内容,然后再让他们将信息提交到数据库。

对于预览表单提交的详细信息,从逻辑上讲 page1.php 应该有 <form action="page2.php"> 而 page2.php 将允许用户预览他们提交的内容。

但是对于表单验证,从逻辑上讲,表单应该提交给自己,以便它可以验证在同一页面上输入的所有必填字段。

那么,有没有一种方法可以在表单通过提交自身进行验证后将用户引导到“下一页”,以便他们可以预览信息?


注意: 我正在重写一个经典的 ASP 表单,它是这样做的:

if errorMsg = "" then
  response.redirect "verify.asp"
else
  session("errorMsg") = errorMsg
  response.redirect "default.asp"
end if

我假设在 PHP 的情况下,类似条件的“else”部分是不必要的,因为它已经发布到自身,只有当错误消息数组为空时,它才应该重定向到验证页面。

【问题讨论】:

【参考方案1】:

您可以使用header 执行重定向:

if(empty($errorMsg)) 
  header("Location: verify.php");
  exit;

【讨论】:

实际上,经过进一步检查,这是行不通的。 PHP 文档说必须在发送任何输出之前 使用标头函数。我相当肯定我的代码是在打开<html> 之后出现的,这会导致错误。 但这确实让我知道我需要看哪里。我发现没有 php 重定向替代方案,推荐的方向是使用 javascript 和元标记,如果禁用 javascript,元标记将说明。 @Tiffany 在输出任何 html 之前不能完成表单处理不应该是有原因的。更一般地,以这种方式将页面发布到自身可能会导致其他问题(例如,如果用户使用浏览器的后退按钮返回页面,浏览器将提示用户重新发布/重新发送表单)。除了使用已建立的框架发布到单独的文件来处理表单和执行重定向之外,这将是一个更好的选择。 那么你会如何推荐在不同的页面上进行表单验证呢?我不反对张贴到verify.php,但前提是我能够在去verify.php 之前验证同一页面上的表单。我不想使用 javascript 来验证表单,以防 javascript 被禁用。 这也可能是一个问题:我的逻辑流程是否正确?因为我必须包含一个 config.php 文件,然后在我开始表单验证之前有几个函数和变量定义。我的一个函数调用打开<html> 标记并准备HTML 页面的其余部分。我想我可以在完成所有表单验证后移动该函数调用,这样可以减少使用标头函数调用的干扰。【参考方案2】:

使用 Mark Heintz 的回答和一些谷歌搜索,我发现最好的方法是结合使用 Javascript 和元标记。元标记将说明何时禁用 javascript。

Redirect in PHP without use of header method

Redirecting to a relative URL in JavaScript

还有一种 AJAX 方式:Modify the URL without reloading the page

【讨论】:

元刷新和 javascript 重定向不能很好地替代服务器发起的重定向,因为浏览器必须在重定向到下一个页面之前开始接收/解析页面。如果这是您的意图,引用的 URL 修改实际上不会将您导航到其他页面。 AJAX/XHR 表单处理完全是另一种动物。

以上是关于PHP提交表单超时的问题的主要内容,如果未能解决你的问题,请参考以下文章

php 表单提交无反应

求助:PHP多表单提交问题,一个页面提交N多个表单

php通过记录IP来防止表单重复提交方法分析

有关PHP提交表单

php提交参数很多的表单 有啥简单的办法

表单提交有那两种方式?PHP如何获得表单提交的数据?