好的,这就是我正在做的事情。看看下面的php和java脚本脚本
PHP
ini_set("soap.wsdl_cache_enabled", "0");
$client = new SoapClient("server/test.wsdl");
$origtext = array('user'=>$_GET['pointname']);
$lastmodif = isset($_GET['timestamp']) ? $_GET['timestamp'] : 0;
$currentmodif = $client->getTime($origtext)->{"timest"};
while ($currentmodif <= $lastmodif) // check if the data file has been modified
{
// sleep(1);
usleep(10000); // sleep 10ms to unload the CPU
clearstatcache();
$currentmodif = $client->getTime($origtext)->{"timest"};
}
$response = array();
$response['msg'] = $client->getMobile($origtext)->{"phone-num"};
$response['timestamp'] = $currentmodif;
echo json_encode($response);
flush();
的Javascript
var timestamp = 0;
var pointname = "test1";
var noerror = true;
function wait() {
$.ajax({
type: "GET",
url: "backend.php",
data: "timestamp=" + this.timestamp + "&pointname=" + pointname,
success: function (transp) {
var response = eval('(' + transp + ')');
timestamp = response['timestamp'];
$("#page1b").html(response['msg']);
$("#page1c").html(timestamp);
noerror = true;
},
complete: function (transp) {
if (!noerror) setTimeout(function () {
wait()
}, 5000);
else wait();
noerror = false;
}
});
}
wait();
一旦ajax请求被触发,服务器端将执行while循环检查时间值,直到时间发生变化,然后它会将新值回显给客户端并显示在网页上。(这一切都会自动完成) ,并没有太多的内存消耗在客户端)我的最终目标是建立一个内部100值的表,发射100 ajax请求显然是不可能的。我想分开处理这些值,但都共享相同的php脚本,这意味着每个值只会在更改时发生更改而不受其他值的影响,但只需要上面显示的一个php脚本。任何建议?
答案 0 :(得分:1)
不,你不能。在较旧的浏览器中,这是可能的,并且甚至有JQuery plug-in来促进它,但是较新的浏览器仅在收到整个请求时触发事件,并且不允许您在此之前读取部分响应。 / p>