자바 스크립트 (jQuery는 AJAX 용)와 PHP를 기반으로 채팅을 만들고 싶습니다.jQuery와 PHP로 긴 폴링 구현하기
이렇게하는 좋은 방법은 롱 폴링을 사용하는 것이라고 들었습니다.
나는이 아이디어를 이해하지만, 서버 측에서 구현하는 방법을 모른다.
무한 루프는 좋지 않은 생각처럼 들립니다.
자바 스크립트 (jQuery는 AJAX 용)와 PHP를 기반으로 채팅을 만들고 싶습니다.jQuery와 PHP로 긴 폴링 구현하기
이렇게하는 좋은 방법은 롱 폴링을 사용하는 것이라고 들었습니다.
나는이 아이디어를 이해하지만, 서버 측에서 구현하는 방법을 모른다.
무한 루프는 좋지 않은 생각처럼 들립니다.
무한 루프를 만들고 싶지는 않지만 시간 제한을 설정할 수 있습니다. 기본적으로 일종의 데이터를 기다리는 동안 X 초 동안 반복합니다. 그런 일이 발생하지 않으면 클라이언트에 새로운 요청을 시작해야한다는 응답을 보내고 동일한 제한 시간을 갖습니다. 채팅 같은 종류를 구현
는$source; // some data source - db, etc
$data = null; // our return data
$timeout = 30; // timeout in seconds
$now = time(); // start time
// loop for $timeout seconds from $now until we get $data
while((time() - $now) < $timeout) {
// fetch $data
$data = $source->getData();
// if we got $data, break the loop
if (!empty($data)) break;
// wait 1 sec to check for new $data
usleep(10000);
}
// if there is no $data, tell the client to re-request (arbitrary status message)
if (empty($data)) $data = array('status'=>'no-data');
// send $data response to client
echo json_encode($data);
왜 프로세서의 용도가 100 % ** 1) 루프 내부에서 수면 ** - 프로세서는 루프를 한 번 실행 한 다음 잠시 동안 스크립트를 저장 한 다음 다시 돌아옵니다 = 100 % 프로세서 사용량이 없음 LOOP 케이스 (A)의 ** 2) END ** ((시간() - 현재 $) <$ 초과) = ((CURRENT_TIME - TIME_WHEN_THE_SCRIPT_STARTED)
, 당신이 사용할 수있는 PHP에서 좋은 아이디어가 아니다 CometChat, Nodjs 및 실시간 데이터 전송을 위해 사용 가능한 API를 사용할 수있는 것보다 당신이 당신의 서버에 스크립트를 설치할 수없는 경우,
Pubnub, Pushemr, Beaconpush 등이 있습니다.
PHP를 사용하지 않는 이유는 무엇입니까? 추론에 대해 자세히 설명해 주시겠습니까? – Gilberg
PHP가 이것 때문에 만들어지지 않았기 때문에 ... PHP는 많은 동시 연결을 처리 할 수 없으며 PHP 서버에서 많은 오버 헤드가 될 것입니다. 올바른 요구 사항에 맞는 적절한 기술 .. "칼은 바늘을 대체 할 수 없습니다" –
PHP를 사용하는 것은 좋은 생각이 아닙니다. nodejs와 같은 것을 사용 해본 적이 있습니까? – ThiefMaster
node.js와 같은 비 차단 항목이 더 이상적 일 것이라고 동의하지만 옵션이 아닌 경우에는 아래에서 내 대답과 같이 PHP에서 구현할 수 있습니다. – doublesharp
대신 웹 소켓을 사용해 보셨습니까? – Xeoncross