0

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

标头 Javascript:

<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}";

?>
4

2 回答 2

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 中指定的用户和组所允许的资源。在这种情况下,错误可能只是指出未经授权的用户正在尝试访问脚本。

于 2013-06-04T12:24:24.167 回答
0

ok i can see a number of issues in your setup here:

  1. Surely you can reduce that timeout interval to something more realistic say like every 1 minute... or 30 seconds, if you think of most email clients they usually only look for new mail every 5 minutes or so, why not try start there and see if that reduces load on your server for starters.

  2. you need to profile your count script, using microtime(true); at the beginning and end of the script to see the amount of seconds it takes to run this script, you may also want to check if there is an index on the 'msg_read' and 'msg_to' columns.

  3. you can read more about the premature error from apache here : 500 Server error: Premature end of script headers:

于 2013-06-04T12:39:02.850 回答