2013-11-23 39 views
0

我不知道什么是问题一个简单的ajax请求拒绝正常运行,我测试它在不同的托管相同的问题。有任何想法吗 ?我的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睡眠php.ini中设置为无限制()这么想的计数在执行时间......与睡眠低于30秒慢速连接

编辑3

链接的phpinfo运行细脚本

http://69.50.252.196/php.php 

@Damiano巴尔巴蒂它不工作, @Deryck它不工作 感谢您的帮助反正

+0

SO是什么问题?这意味着什么 - 拒绝正常运行?另外为什么你使用'睡眠'? –

+0

睡眠模拟需要40秒的php函数 –

+0

http服务器错误日志文件说什么? Waht浏览器控制台说?没有什么意义,可能是错误的。 – arkascha

回答

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/

0

首先,这两个(火狐25和Chrome 31,分别)在连续尝试的工作:

Firefox 25 Chrome 31

这不是一个惊喜,我敢肯定。你开始看到错误的地方是当你将另一个连接与你的sleep()函数混合(出于某种原因需要40秒)。sleep()将完全结合该过程,直到它收到中断信号或完成其时间。这意味着如果一个人在40秒之前试图尝试同样的事情,他们将不会得到任何回应,除非他们在定时器击中20秒之前发送请求(基于我的浏览器的演绎推理在60秒时获得504超时)。

也许你打算这样,也许不是。无论哪种方式,阅读下面的方式来操纵这个更好地为你工作。以下操作不会再减少等待时间,但会导致数据响应(顺便说一下,您应该在$.ajax()函数中设置为dataType: "text"以节省带宽和处理)。如果您想切入功能并中断sleep()(或者只是允许在中间执行另一次执行并继续运行睡眠定时器),则可以使用this example

没有关于您的服务器设置(PHP,nginx特定设置)的更多细节,我只能指向PHP sleep() page504 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巴尔巴蒂的反应和他链接到该网站后,基本相同的信息。如果您仍然有问题,放置一个info.php文件,我们可以访问(确保没有密码,等是在php.ini文件),并把这个代码在它:

<? phpinfo(); ?> 

祝你好运!

相关问题