Php 脚本关闭不够快-脚本头过早结束?
我有下面的脚本来检查是否有新消息,如果菜单栏中有一些新消息,那么就用括号括起来。这样做的目的是,你不必刷新页面就可以看到收件箱中有新邮件。脚本工作得很好,但是,它给服务器带来了一些问题,并返回了进程响应-“脚本头过早结束”-有什么办法可以解决这个问题吗 头javascript:Php 脚本关闭不够快-脚本头过早结束?,php,javascript,Php,Javascript,我有下面的脚本来检查是否有新消息,如果菜单栏中有一些新消息,那么就用括号括起来。这样做的目的是,你不必刷新页面就可以看到收件箱中有新邮件。脚本工作得很好,但是,它给服务器带来了一些问题,并返回了进程响应-“脚本头过早结束”-有什么办法可以解决这个问题吗 头javascript: <script> $(document).ready(function(){ $("#inmsg").load("./get_user_msg.php"); var refreshId
<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>
<?
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}";
?>
$(文档).ready(函数(){
$(“#inmsg”).load(“/get#u user_msg.php”);
var refreshId=setInterval(函数(){
$(“#inmsg”).load('./get_user_msg.php?randval='+Math.random());
}, 3000);
$.ajaxSetup({cache:false});
});
get\u user\u msg.php:
<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>
<?
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}";
?>
故障的可能原因:
好的,我可以在这里看到您的设置中的一些问题:
这种情况每次都会发生?可能是因为服务器崩溃而限制了cpu。对于这种类型的场景,最正确的方法是使用套接字,因为如果我们每3秒发出一个用户数乘以用户数的请求,服务器当然不能忍受。你应该在PHP中使用完整的openning标记:
@Sharky-不应该偶尔使用一次,因为我认为服务器限制了进程。使用实时应用程序的一个好解决方案是使用套接字,然而,实现起来并不简单,因为你依赖于通过TCP进行通信的应用程序,而且,如果数据库中有很多查询,你应该有一个好的服务器。如果我把它从3000改为30000,会有帮助吗?然后每30秒检查一次,对吗?:)这有助于解决所有问题,具体取决于执行此类请求的登录用户数量,一旦您对提供应用程序的服务器有物理限制,就会导致问题。他的方法称为长轮询(longpolling),您可以不时向服务器发出请求,这会在服务器上产生流量,也就是说,这不是最佳解决方案。推技术插座是的,我会从那里开始,把它调低到30000毫秒,让它运行一段时间,然后看看错误是否再次发生。如果要复制+粘贴,也要反向链接到源代码。该文本在许多网站上都有,包括:。例如,见