php sever push 請問有沒有php服務推送到客戶端的例子?建立長連接,用iframe接收數據好,還是ajax接收好? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 至于用哪个好,我用的是ajax+setTimeout,我感觉都差不多,至少效果上看不出上面差异来 在本地測試運行的時候,如果同時請求兩個或以上push.php,在chrome瀏覽器會等待一個完成,再運行下一個,IE瀏覽器就會同時運行,請問什麽原因?我想同時請求多個push.php,同時運行push.phpsession_start();session_write_close();$time=time();while(1){sleep(1);if($sss=getsql()){echo $sss;break;}else if(@file_get_contents(session_id().'.txt')!=$time){echo 'no';break;}else if(time()-$time>=30){echo 'no';break;}}客戶端接收數據或超時,客戶端再ajax請求一次如果用iframe接收的話,怎麼處理? 连个php程序谁也不会等谁,只是因为时间没有改变都没有返回的条件而已 剛才我已經解決了chrome的等待問題了,在ajax請求url的時候,加一個隨機數就可以了我有一個疑問,如果,有人惡意刷新頁面,會不會建立N個push.php在後臺默默運行?還有一個疑問,如果用iframe不斷的接受數據,怎麼處理?set_time_limit(0);echo str_repeat(' ',4096);while(1){sleep(1);echo '1<br>';ob_flush(); flush(); if(connection_aborted()){break;}} connection_aborted()會否檢查到,我只關了這個iframe推送頁面,我沒有關閉瀏覽器或沒有退出程序,就會停止推送? 你这个是 server push 吗?服务器推送是要浏览器支持的,因为已越出 http 协议的范围了。过去只有已倒闭的网景浏览器支持这种方式,现在还没听说那个浏览器支持这个东西#3 的代码只是将一次 http 请求延长至 30 秒(time()-$time>=30) web qq 是否模擬 server push 吗?web office 是用socket還是模擬 server push 長連接?IE6-IE8都不支持socket,但是可以用microsoft的web office,他們是否用了iframe不斷接收服務器輸出的數據?? 唠叨大哥,通過服務器不斷發送數據到客戶端,建立長連接模擬socket是否可行,服務器資源方面? ff支持websocket,猜想chrome应该也支持 /* server.php*/if(isset($_POST['text'])){ file_put_contents('txt.txt', $_POST['text']."\r\n"); echo '1'; exit;}$filemtime = isset($_POST['filemtime']) && $_POST['filemtime']? $_POST['filemtime']: filemtime('txt.txt');while(1){ if($filemtime == filemtime('txt.txt')){ sleep(1); clearstatcache(); }else{ echo json_encode(array('filemtime' => filemtime('txt.txt'), 'text' => file_get_contents('txt.txt'))); exit; }}/* a.html*/<input type="text" id="text" value="text"><input type="button" value="发送" onclick="send()"><script src="../jquery.js"></script><script>function send(){ var text = document.getElementById("text").value; $.post("server.php", {"text": text, "rand": Math.random()}, function(data){ if(data == "1"){ alert("发送成功!"); } });}</script>/* b.html*/<div id="div"></div><script src="../jquery.js"></script><script>var filemtime = 0;function test(){ $.post("server.php", {"filemtime": filemtime, "rand": Math.random()}, function(data){ if(data){ data = eval("(" + data + ")"); filemtime = data["filemtime"]; document.getElementById("div").innerHTML = data["text"]; setTimeout("test()", 1000); }else{ alert("error"); } });}test();</script>/* 说明:测试中你要先开启b.html然后再开启a.html发送消息,至于server.php,你只要将内容放进去就不用管了 */ 既然 #11 说 ff支持websocket 。那就请他给个例子就是了socket 通讯的基础是在两点间已建立了持续的连接,一方始终在监听与对方约定的端口,并根据得到的数据作出相应的动作所以 服务器推,不但要浏览器听,还要求服务器端的程序常驻,并具有听功能 kyzy_yy_pm的ajax的例子很好,還有沒有其他列子呢?例如:socket或iframe 这个很简单了,php 或者 node.js 都能实现google 一下即可 magento反应问题 php页面调用客户端麦克风 用emacs怎么编写php discuz里怎么合并两个查询语句为一句呀? HTTP协议 求助!php上传大文件时,服务器很卡 由不成熟到成熟~~已经攻破论坛两大难题~~ 发送短信连接接口 给茶叶门户网站取个名字 PHP如何在多IP服务器中切换IP采集数据? 如何使用php访问mysql表并形成XML文档? 怎么写分页?求助 各位高手
session_write_close();
$time=time();
while(1){
sleep(1);
if($sss=getsql()){
echo $sss;
break;
}else if(@file_get_contents(session_id().'.txt')!=$time){
echo 'no';
break;
}else if(time()-$time>=30){
echo 'no';
break;
}
}客戶端接收數據或超時,客戶端再ajax請求一次
如果用iframe接收的話,怎麼處理?
我有一個疑問,如果,有人惡意刷新頁面,會不會建立N個push.php在後臺默默運行?還有一個疑問,如果用iframe不斷的接受數據,怎麼處理?
set_time_limit(0);
echo str_repeat(' ',4096);
while(1){
sleep(1);
echo '1<br>';
ob_flush();
flush();
if(connection_aborted()){
break;
}
}
服务器推送是要浏览器支持的,因为已越出 http 协议的范围了。
过去只有已倒闭的网景浏览器支持这种方式,现在还没听说那个浏览器支持这个东西#3 的代码只是将一次 http 请求延长至 30 秒(time()-$time>=30)
web office 是用socket還是模擬 server push 長連接?IE6-IE8都不支持socket,但是可以用microsoft的web office,他們是否用了iframe不斷接收服務器輸出的數據??
ff支持websocket,猜想chrome应该也支持
/*
server.php
*/
if(isset($_POST['text'])){
file_put_contents('txt.txt', $_POST['text']."\r\n");
echo '1';
exit;
}$filemtime = isset($_POST['filemtime']) && $_POST['filemtime']? $_POST['filemtime']: filemtime('txt.txt');while(1){
if($filemtime == filemtime('txt.txt')){
sleep(1);
clearstatcache();
}else{
echo json_encode(array('filemtime' => filemtime('txt.txt'), 'text' => file_get_contents('txt.txt')));
exit;
}
}/*
a.html
*/
<input type="text" id="text" value="text">
<input type="button" value="发送" onclick="send()"><script src="../jquery.js"></script>
<script>
function send(){
var text = document.getElementById("text").value; $.post("server.php", {"text": text, "rand": Math.random()}, function(data){
if(data == "1"){
alert("发送成功!");
}
});
}
</script>
/*
b.html
*/
<div id="div"></div><script src="../jquery.js"></script>
<script>
var filemtime = 0;
function test(){
$.post("server.php", {"filemtime": filemtime, "rand": Math.random()}, function(data){
if(data){
data = eval("(" + data + ")");
filemtime = data["filemtime"];
document.getElementById("div").innerHTML = data["text"];
setTimeout("test()", 1000);
}else{
alert("error");
}
});
}test();
</script>
/* 说明:测试中你要先开启b.html然后再开启a.html发送消息,至于server.php,你只要将内容放进去就不用管了 */
这个很简单了,php 或者 node.js 都能实现
google 一下即可