Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 错误:508(检测到循环)_Javascript_Php_Jquery_Html - Fatal编程技术网

Javascript 错误:508(检测到循环)

Javascript 错误:508(检测到循环),javascript,php,jquery,html,Javascript,Php,Jquery,Html,好吧,这不是一个恰当的问题或任何东西。。 我只是有点好奇,试着搜索,但找不到我的问题的准确答案,所以我决定试试,在这里问另一个问题 我有一个有趣的小项目,你应该一直点击一个按钮,直到你在其他玩家中获得最高点击率。我有一个页面ManageClick.php,其中包含以下代码- <? sleep(rand(1,3)); $storage = fopen("TOTAL.txt", "r+"); if (flock($storage, LOCK_EX)) { $a = fread($sto

好吧,这不是一个恰当的问题或任何东西。。 我只是有点好奇,试着搜索,但找不到我的问题的准确答案,所以我决定试试,在这里问另一个问题

我有一个有趣的小项目,你应该一直点击一个按钮,直到你在其他玩家中获得最高点击率。我有一个页面ManageClick.php,其中包含以下代码-

<?
sleep(rand(1,3));
$storage = fopen("TOTAL.txt", "r+");
if (flock($storage, LOCK_EX)) {
    $a = fread($storage,filesize("TOTAL.txt"));
    $a++;
    fseek($storage, 0);
    fwrite($storage, $a);    
    flock($storage, LOCK_UN);
} else { 
}
fclose($storage);
?>
其中域是我的网站名称

知道是什么导致了以下问题吗?快速点击按钮就是其中之一,我想它会向页面发送多个请求,并导致508错误。还有,我可以尝试用什么方法来修复控制台中出现的错误

另外,请注意我不是英国人。。。对不起

请参见-添加my Testpage.html的代码以获得更高质量的帮助

 <html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function(){
$("img").click(function() {
var test = $("#Clicks").load("TOTAL.txt");
$.post('ManageClick.php');
});
});
</script>
</head>
<body >
<center>
<img src='ABCD.png'>
<div id='Clicks' style=""></div>
</body>
</html>

$(函数(){
$(“img”)。单击(函数(){
var test=$(“#点击”).load(“TOTAL.txt”);
$.post('ManageClick.php');
});
});

您的Web服务器正在根据某些配置检测长时间运行的脚本。我敢打赌,如果你取消睡眠功能,它将不再检测循环

此外,如果希望TOTAL.txt中的值增加,请确保强制转换为整数

$a = fread($storage,filesize("TOTAL.txt"));
$a = (integer) $a;  // cast as integer
$a++; // now you can increase it
为了进一步缓解此问题,如果必须保留lseep()函数,请在html/js中使用以下步骤:

  • 单击按钮(调用ajax)
  • 禁用_按钮(当ajax正在运行/php正在睡眠时)
  • 接受\u ajax\u返回\u值(当ajax响应时)
  • 重新启用按钮(在ajax完成并可以再次启动后)

  • 如果我理解的话,您有一个网页,其中有一个游戏,您可以调用php脚本来保存用户单击按钮的次数

    你说控制台(我猜chrome的开发工具或类似工具)返回一个508错误作为“循环检测”。这是服务器告诉客户机代码中可能存在循环,因为它被调用的次数太多。好。。。这不是自动重定向,只是你多次调用它

    根据您对游戏的解释,我宁愿将点击次数保存在javascript变量中,并仅在游戏结束后发送。这样,您只需调用服务器一次

    另一方面,php代码假定您的网站只有一个用户。我的意思是,你把值保存在一个文件中,但它不考虑谁的游戏

    设想一下,如果你和我同时打开网站,你开始添加点击,然后我添加另一个,但计数保存在同一个地方

    编辑:代码示例 jQuery:

    var test = $("#Clicks").load("TOTAL.txt");
    $("img").click(function() {
      test = parseInt(test) + 1;
    });
    
    这样,您就可以加载以前存储的数字并记录点击次数。接下来,您需要构建一个函数,该函数在空闲时间后发送单击计数(或者如果每轮有超时)

    我假设如果用户花了3秒钟没有点击,他就走了,所以我更新了服务器。新jquery将是:

    var test = $("#Clicks").load("TOTAL.txt");
    var wdt;
    $("img").click(function() {
      wdt = setTimeout(serversync, 3000);
      test = parseInt(test) + 1;
    });
    
    function serversync(){
      $.post('ManageClick.php?count='+test);
    }
    
    在这段代码中,我添加了
    serversync
    函数。对于
    setTimeout()
    ,它在3000毫秒后运行。此超时在用户单击时触发,但如果再次单击,计时器将重置

    最后,您应该将新的计数值传递给
    ManageClick.php
    脚本。我将其作为
    count
    GET属性传递(您可以通过
    $\u GET['count']


    当然,这既不完美也不安全(我可以很容易地伪造一个大量的计数发送到服务器,但那是另一回事),但这是想法

    请显示Ajax代码。
    GEThttp://domain.tk/TOTAL.txt
    根据您共享的代码,控制台窗口中不应显示此代码。此处还发生了其他情况。导致此情况的原因可能是错误的ModRewrite规则。此项目开始时TOTAL.txt文件中有什么内容?@webjujuju TOTAL.txt的值为1目前。谢谢你的帮助。不幸的是,这似乎对我不起作用。请重新检查我的问题(添加了我的Testpage.html的代码)这可能有助于进一步解决问题谢谢这就像我能做到一样每个人完成的点击总数应该存储在一个单独的文件中,每次用户点击按钮时都需要显示该文件的值基本上就像一个查看计数器(除了用户需要单击按钮在文件中添加+1)如果用户愿意,他可以创建自己的帐户,其中该特定用户所做的单击将存储在一个表中,并以“排行榜”的形式显示给每个人(实际上,网站的40%是印地语)@AkshitSharma检查我编辑的回复。我添加了一些代码示例
    var test = $("#Clicks").load("TOTAL.txt");
    var wdt;
    $("img").click(function() {
      wdt = setTimeout(serversync, 3000);
      test = parseInt(test) + 1;
    });
    
    function serversync(){
      $.post('ManageClick.php?count='+test);
    }