脚本没有足够快地关闭 - 脚本标题的过早结束?

时间:2013-06-04 11:58:20

标签: php javascript

我有以下脚本来检查新消息,是否有一些菜单栏包含括号和新消息的数量。这个想法是您不必刷新页面以查看收件箱中是否有新消息。该脚本运行良好,但是,它导致服务器出现一些问题,并返回流程响应 - '脚本标题的过早结束' - 任何想法我如何解决这个问题?

标题Javavascript:

<script>  
$(document).ready(function(){

    $("#inmsg").load("./get_user_msg.php");
    var refreshId = setInterval(function() {
        $("#inmsg").load('./get_user_msg.php?randval='+ Math.random());
    }, 3000);
    $.ajaxSetup({ cache: false });

});
</script>

get_user_msg.php:

<?
session_start();

include "conf/config.php";

$session_memberid = $_SESSION['memberid'];

$head_getnewmsg = mysql_query("SELECT * FROM messages WHERE msg_to = '$session_memberid' AND msg_read = 'no'");
$num_new_msg = mysql_num_rows($head_getnewmsg);

if ( $num_new_msg != '0' ) {
$head_show_new_msg = " ($num_new_msg)";
} else { $head_show_new_msg = ''; }

echo "inbox{$head_show_new_msg}";

?>

2 个答案:

答案 0 :(得分:1)

问题的可能原因:

  1. 升级或降级到不同版本的PHP可以在httpd.conf中留下剩余选项。在命令行中使用php -v检查当前版本的PHP,并在httpd.conf中搜索提及另一个版本的任何行。如果找到它们,请将它们注释掉,提取httpd.conf并重新启动apache。

  2. 如果脚本因资源限制而被终止,httpd.conf中的RLimitCPU和RLimitMEM指令也可能导致错误。

  3. suEXEC,mod_perl或其他第三方模块中的配置问题通常会干扰脚本的执行并导致错误。如果这些是原因,则可以在apache error_log中找到与详细信息相关的其他信息。

  4. 如果suphp的日志大小达到2GB或更大,您可能会看到脚本标头的过早结束错误。查看日志包含的内容并将其gzip或null。重新启动apache,然后处理suphp日志带来的任何问题。 suphp日志位于:/ usr / local / apache / logs / suphp_log

  5. 脚本的权限也可能导致此错误。 CGI脚本只能访问httpd.conf中指定的用户和组所允许的资源。在这种情况下,错误可能只是指出未经授权的用户正在尝试访问脚本。

答案 1 :(得分:0)

好的,我可以在这里看到你的设置中的一些问题:

  1. 当然,您可以将超时间隔缩短为更真实,比如每1分钟......或30秒,如果您想到大多数电子邮件客户端,他们通常每5分钟左右只会查找一封新邮件,为什么不要尝试从那里开始,看看是否会降低服务器上的启动器负载。

  2. 你需要使用microtime(true)来描述你的计数脚本;在脚本的开头和结尾看到运行此脚本所需的秒数,您可能还想检查“msg_read”和“msg_to”列上是否有索引。

  3. 您可以在此处阅读有关apache过早错误的更多信息:500 Server error: Premature end of script headers: