注意 这是不同的,因为我希望Javascript接收它。
即使我以后必须切换到套接字,我也想知道如何使用这种方法。虽然我可能会在以后切换到推送方法,但目前不感兴趣
原因是我想减少使用的服务器资源,因为我的聊天目前每500毫秒检查一次消息,这很糟糕;但是,这是必要的,因为我的一些用户一直在键入消息,但一些用户只有时间,例如每2分钟一次消息。因此,我想知道如何获取数据库的最后一个条目的时间戳,以确定它们是否在最后一次发送消息,30秒,然后每10秒检索一次消息。如果他们在过去2分钟内发送了一个,则每30秒检查一次,但如果他们非常活跃,则增加时间间隔。关键是根据活动确定间隔。我已经超过了我的CPU一次,我也想尝试一下。 我可能不得不切换到套接字,我没有任何经验。
如果我碰巧得到了时间戳;我该如何处理时间戳?
时间戳 - 时间()=以毫秒为单位的时间?
我可以将时间戳设置为像这样的cookie。
JS:
@echo off
setlocal EnableExtensions DisableDelayedExpansion
rem Define global constants here:
set "INFILE=line.txt"
set "OUTFILE=line_new.txt"
set "SEARCH= "
set "REPLACE=+"
set "KEEPQUOTES="
set "QUOTE="""
set "QUOTE=%QUOTE:~,1%"
set "QFLAG="
> "%OUTFILE%" (
for /F usebackq^ delims^=^ eol^= %%L in ("%INFILE%") do (
set "LINE=%%L"
call :SUB LINE
)
)
endlocal
exit /B
:SUB
setlocal EnableDelayedExpansion
set "LINE=!%1!"
set "LINENEW="
set /A "POS=0"
:LOOP
set "CHAR=!LINE:~%POS%,1!"
set /A "POS+=1"
if not defined CHAR (
echo(!LINENEW!
endlocal
exit /B
)
if "!CHAR!"=="!QUOTE!" (
if defined QFLAG (
set "QFLAG="
) else (
set "QFLAG=Quoted"
)
if defined KEEPQUOTES (
set "LINENEW=!LINENEW!!CHAR!"
)
) else if defined QFLAG (
if "!CHAR!"=="!SEARCH!" (
set "LINENEW=!LINENEW!!REPLACE!"
) else (
set "LINENEW=!LINENEW!!CHAR!"
)
) else (
set "LINENEW=!LINENEW!!CHAR!"
)
goto :LOOP
php.php:
$(document).ready(function(){
document.cookie...
var getMsg = function(){
$.ajax {
url: php.php,
...
}
}
if(document.cookie < 30 secs){
var time = 500;
}
setInterval(time, getMsg)
});
答案 0 :(得分:2)
您可以执行相反的操作,而不是将服务器汇集在一起 - 当您的应用在数据库中插入消息时,您会向客户发送消息。
WebSockets就是答案。
已经构建了一些易于使用的库: