PHP에서 채팅 상자를 만들었습니다. 유일한 문제는 자동으로 다시로드되지 않는다는 것입니다. PHP로 다시로드 할 수있는 방법이 있습니까? 아니면 AJAX를 사용할 수 있도록 모든 것을 옮겨야합니까? 또한 내 사용자 중 한 명이 온라인 상태입니다. 나는 그들이 키를 누르거나 지난 3 분 동안 클릭하고 페이지를 떠날 때 오프라인으로 설정하면 오프라인 상태가되도록 설정했습니다. 그들은 Firefox 9.0을 사용하고 있습니다. onunload를 사용했기 때문입니까? 해결책은 무엇입니까?PHP reload chat-box?
답변
meta refresh
태그를 사용할 수 있습니다.이 태그는 PHP에서 생성 될 수 있지만 실제로 PHP 관련 기능은 아닙니다.
<meta http-equiv="refresh" content="600">
이렇게하면 600 초 후에 콘텐츠가 새로 고침됩니다. 응용 프로그램 요구에 따라이 시간을 더 정확하게 조절할 수 있습니다.
아마 Ajax는 사용자 비활성을 확인하는 데 선호되는 방법입니다. 여기에 체크 사용자 활동에 유사한 게시물입니다 - How can I detect with JavaScript/jQuery if the user is currently active on the page?
UPDATE 파이어 폭스에서 사용자의 종료를 처리하는 방법의 두 번째 질문에 관해서는
, 그 당신은 onunload
이 일치하지 않을 수 있다는 것을 말한 것처럼. 이것은 아약스의 사용이 다시 빛나는 곳입니다. 앱이 클라이언트에서 아약스 업데이트를받지 못하는 경우 정리 작업을 수행하여 비활성으로 표시 할 수 있습니다.
우리는 ASP.Net MVC 응용 프로그램에서 비슷한 상황이있었습니다. 응용 프로그램 변수를 사용하여 최근 활동 및 사용자 상태를 저장했습니다. PHP 예제는 found here 일 수 있습니다.
희망이 도움이됩니다.
일부 JavaScript를 추가하면 전체 페이지를 자동으로 새로 고칠 수 있지만 AJAX를 사용하면 최종 사용자에게 훨씬 유리합니다.
그는 또한 jQuery를 사용하고 일부 컨테이너 스크립트 get.php에로드 할 수 있습니다. 위의 솔루션과 채팅을 썼다. – Kobra
"AJAX를 페이지를 다시로드하지 않고 일부 데이터를 가져 오십시오"라는 포괄적 인 용어로 사용하고 있습니다. –
페이스 북의 방식은 클라이언트 "Alice"가 약 1 분 동안 열려있는 새 메시지 요청 대기 중입니다. 다른 클라이언트 "Bob"이 Alice에게 메시지를 쓰면 서버는 Alice의 보류중인 요청을 완료 할 수 있습니다. 그런 다음 Alice는 즉시 새 메시지를 가져오고 새로운 보류중인 요청을 엽니 다.
약 1 분 후에 보류중인 요청을 시간 초과하거나 브라우저에서 처리해야합니다. 브라우저마다 다른 시간 제한 설정이 있으므로 작은 것을 사용하십시오. 시간 초과 후 새로운 보류중인 요청을 열면 아무 것도 놓치지 않습니다. 클라이언트가 이벤트 $의 이드의 메시지 NR의 $의 MNR을 기다리고,이 만들 보류중인 요청을 호출 ( listen.php
define('WAIT_MAX', 55); // wait max 55 sec
define('WAIT_INT', 1); // wait 1 sec per call
$start = time();
while ($start + WAIT_MAX > time())
{
// check if an event occured
$res = mysql_query('SELECT * FROM event WHERE `eid`="'.$eid.'" AND `mnr`="'.$mnr.'"');
if (mysql_num_rows($res) > 0)
{
// event occured
$row = mysql_fetch_assoc($res);
$msg = $row['msg'];
echo "<event eid=\"$eid\" mnr=\"$mnr\" msg=\"$msg\" />\n";
die();
//die('event occured: '.$msg."<br>\nNext mnr=".($mnr+1));
//break;
}
else
{
// no event occured
mysql_free_result($res);
sleep(WAIT_INT);
}
}
die(WAIT_MAX . ' seconds passed and no event occured.');
밥은 자사의 메시지를 보냅니다 :
내가 함께 놀러 몇 가지 코드를 얻었다. $의 MSG를
if (isset($_GET['msg']))
$msg = $_GET['msg'];
else
$msg = 'no message given, just firing the event.';
mysql_query('INSERT INTO `event` (`eid`, `mnr`, `msg`) VALUES ("'.$eid.'", "'.$mnr.'", "'.$msg.'")');
일부 init.php을 제공 yell.php하면 작동하도록 :
$eid = -1;
$mnr = -1;
if (isset($_GET['eid']) && isset($_GET['mnr']))
{
$eid = max(0, (int)$_GET['eid']);
$mnr = max(0, (int)$_GET['mnr']);
}
elseif (isset($_GET['eid']))
{
$eid = max(0, (int)$_GET['eid']);
$mnr = 1;
}
else
die('no eid given');
이 코드를 원하는대로 사용하고 수정하십시오.
- 1. php-cli에서 php.ini reload
- 2. PHP cron reload woes
- 3. facebook chatbox 지속성
- 4. 자동 스크롤 chatbox
- 5. iWebKit/iPhone : MySQL, AJAX, PHP 및 Javascript가 포함 된 Chatbox
- 6. save & reload directionService.route response
- 7. javascript reload
- 8. Reload UITableViewController
- 9. jQuery ajax chat reload
- 10. Onclick Reload 페이지
- 11. Wordpress 플러그인에 ajax reload 사용하기
- 12. Reload tags file Vim
- 13. nstableview reload not working
- 14. Reload iFrame CSS
- 15. reload uitableview simultaniously
- 16. mod_wsgi force reload modules
- 17. reload tabledata가 cellForRowAtIndexPath에 영향을줍니다.
- 18. Reload fb : 덧글 위젯
- 19. grails reload classes runtime
- 20. reload UIPickerView on didSelectRow
- 21. Reload Table Animation
- 22. uitableviewcontroller reload 섹션 헤더
- 23. Gradle : reinitialize/reload settings.gradle
- 24. Fancybox iframe reload
- 25. 데이터베이스에서 Reload TableView 데이터
- 26. jquery tabs reload
- 27. Reload Listview in vb6
- 28. Geoserver Configuration Reload
- 29. Force reload EntityManager
- 30. junit reload classes
예, AJAX를 사용하여 누군가를 오프라인으로 표시했습니다.페이지를 떠날 때와 같은 기능을 사용하지 않기 때문에이 기능은 Firefox 9.0에서 작동하지 않는 것 같습니다 – CoffeeRain
@shanabus, 두 가지 질문이 있습니다. 두 번째 질문도 있습니다. – Alexander
@ Alexander, 나는이 질문의 두 번째 부분을 다루었다고 생각한다. 감사! – shanabus