我不知道什么是简单的ajax请求拒绝运行正常的问题,我在不同的托管上测试它同样的问题。任何想法?
o.php
<html>
<body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script>
function ksearch(){
var dataString = $("#areax").val();
$.ajax({
type: "POST",
url: "csv.php",
data: {html: dataString},
success: function(data)
{
$("#update_div").html(data);
}
}); // end ajax
}// end function
</script>
<textarea id="areax"></textarea>
<button type="button" onclick="ksearch();" >Submit</button>
<div id="update_div"></div>
</body>
</html>
csv.php
<?php
$str = $_POST['html'];
sleep(40);
echo $str;
?>
所有萤火虫详细信息都贴在这里 http://pho.to/4BLeG
修改1
脚本从任何连接都运行得很好,有些客户端只有慢速连接才会遇到这个问题。
修改2
成功回调30秒后返回空响应标记,虽然最大执行时间和设置时间限制在php.ini中设置为无限制,安全模式关闭甚至php sleep()不计入执行时间..如果睡眠时间低于30秒,脚本在慢速连接上运行正常
编辑3
链接phpinfo
http://69.50.252.196/php.php
@Damiano Barbati它不起作用, @Deryck它不起作用 谢谢你的帮助
答案 0 :(得分:0)
更改为:
<?php
var_dump($_POST);
?>
然后在炮弹内射击:
curl -d "first=1&second=2" "http://69.50.252.196/csv.php"
输出是什么?
编辑:
我得到以下内容:
<html>
<head><title>504 Gateway Time-out</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Time-out</h1></center>
<hr><center>nginx/0.7.65</center>
</body>
</html>
问题与php_time_limit无关,但与php-fpm时间限制有关,请按照此类指南进行修复。
http://rtcamp.com/tutorials/php/increase-script-execution-time/
答案 1 :(得分:0)
首先,这两个(分别是Firefox 25和Chrome 31)可以连续尝试:
这不奇怪,我敢肯定。你开始看到错误的地方是当你将另一个连接与你的sleep()
函数混合时(由于某种原因,它会持续40秒)。 sleep()
将完全占用该过程,直到收到中断信号或完成其时间。这意味着如果一个人在40秒完成之前尝试尝试同样的事情,除非他们在计时器达到20秒之前发送请求,否则他们将无法获得任何回复(基于我的浏览器在60秒时获得504超时的演绎推理) )。
也许你打算这个,也许不是。无论哪种方式,请阅读下面的方法来操作它以更好地为您工作。以下内容不会再缩短等待时间,但会导致数据响应(顺便提一下,您应该在dataType: "text"
函数中设置为$.ajax()
以节省带宽和处理时间。如果你想切入函数并中断sleep()
(或者只是允许中间的另一次执行并继续运行睡眠定时器),你可以使用this example。
如果没有关于服务器设置的详细信息(PHP,nginx特定设置),我只能指向PHP sleep()
page和504 Gateway Timeout Tips for nginx。
基本上,您需要在配置文件中使用这些设置:
<强>的php.ini 强>
max_execution_time = 300
/etc/php-fpm.d/www.conf - (仅当先前使用的变量需要更改时 - 否则默认情况下将采用max_exec_time的值)
request_terminate_timeout = 300
nginx主机配置文件
location ~ \.php$ {
fastcgi_pass unix:/tmp/php5-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_read_timeout 300;
}
最后一个的主要变化是fastcgi_read_timeout=300;
输入后我还看了@Damiano Barbati的回复,他链接到的网站基本上是相同的信息。如果您仍有问题,请放置一个我们可以访问的info.php
文件(确保您的php.ini文件中没有密码等)并将此代码放入其中:
<? phpinfo(); ?>
祝你好运!