2009-09-29 7 views
2

HTTP 요청이 수신 될 때 PHP 스크립트의 새 인스턴스를 시작하는 대신 하나의 PHP 스크립트가 여러 요청을 처리 할 수있는 방법이 있습니까?PHP 파일이 여러 요청을 처리 할 수 ​​있습니까?

+2

가 왜 그런 일을할까요 여기

유용한 PHP 데몬에 대한 라이브러리입니다? 기본 상태 비 저장 HTTP 메타포를 깨뜨리는 것 같습니다. 시나리오를 자세히 설명 할 수 있습니까? 더 포괄적이고 큰 그림 답변을 제공 할 수 있습니까? –

+1

기본적으로 AJAX 검색 프로그램이 PHP 스크립트에 질문을 계속하는 것을 상상해보십시오 ...이 키워드에 대한 결과를 줘봐, 키워드에 대한 결과를 줘봐. PHP 스크립트의 시작은 MySQL DB를 통해 읽고 초기화한다. PHP가 다시 시작되면 수백만 번 DB를 읽어야합니다. 만약 내가 그것을 계속 유지할 수 있고, 여러 바보 같은 AJAX 요청이 그것에 의해 제공된다면 나는 그것이 더 좋을 것이라고 확신한다. –

+1

아하나. 그렇다면 간단한 캐싱 솔루션 만 있으면됩니다. Memcached 또는 APC는 의사가 주문한 것일뿐입니다. 해결할 필요가있는 것은 캐시 스탬프 (cache stampedes)의 문제입니다. 여기에는 몇 차례 대답을 들었습니다. –

답변

1

는 대한 HTTP 요청에 대한 구현을 보지 못했어요. 내가 성취 할 수 있었던 것은 모든 요청이 다시 오기를 기다리는 것입니다. 명령 줄에서 프로세스를 포크하여 백그라운드로 보낼 수 있습니다. 아니면 Gearman (분산 작업)을 활용할 수 있습니다.

+0

"는 모든 요청이 다시 오기를 기다리는 것입니다." 어떤 종류의 응답을 고객이 기대합니까? 요청이 끝난 후 PHP가 HTTP 텍스트를 보낸 후 클라이언트가 동일한 요청으로 응답하여 동일한 PHP에서 처리 할 수 ​​있습니까? –

+0

나는 그 문제를 다른 방향으로 생각하고 있었다. 1 요청을 받고 몇 가지 새로운 요청을 인스턴스화합니다. –

+0

PHP 요청을 어떻게 시작합니까? 그게 무슨 뜻 이죠? –

1

파일을 HTTP 서버로 만들고 프로세스로 실행하는 경우 예.

아파치와 mod_php가 실행되면 no.

은 (도대체 왜 당신은 어쨌든 원하는 것?)

+0

한 스크립트가 매번 다시 초기화하는 대신 클라이언트의 반복적 인 요청을 추적 할 수 있도록합니다. –

+0

PHP의 기능/제한 사항은 사용자가 보는 방법에 따라 다릅니다. 일반적으로 클라이언트 데이터를 추적하는 것은 $ _SESSION을 사용하여 수행됩니다. 이는 아마도 사용자가 조사해야하는 것일 수도 있고 전혀 다른 기술 일 수도 있습니다. –

1

내가 아는 한, 그렇게 할 방법이 없습니다. 내가 생각할 수있는 가장 가까운 것은 (xcache 또는 APC)와 같은 php opcode 캐시를 사용하는 것입니다. 그것들은 빠른 스크립트 실행을위한 코드를 캐싱 할 것입니다. 모든 요청에는 스크립트의 인스턴스가있을 것이라고 저는 믿습니다.

2

PHP는 분산 네트워크를 통해 응용 프로그램의로드 균형 조정 및 확장 기능을 제공하는 "공유 없음"개념을 기반으로합니다. 그래서 "아니오"는 할 수 없습니다. 시작 비용이 높다고 상상해보십시오. 아키텍처를 조정하여 가능한 한 오브젝트/데이터/뷰를 개념적으로 '캐시'하십시오. serialize() 또는 뭔가 사용하십시오.

1

원하는 것은 데이터를 캐시하는 것입니다.

PHP 스크립트는 요청에 대한 유효한 데이터가 캐시에 있는지 단순히 확인해야합니다. 그렇지 않다면 데이터베이스를 읽고 캐시를 업데이트 한 다음 결과를 사용자에게 반환하십시오.

다양한 캐싱 라이브러리를 조사하고 캐쉬를 확장하는 방법을 신중히 고려해 보시기 바랍니다. 하나의 시작 지점은 Zend_Cache입니다. 아마도 백엔드에 memcached가있을 것입니다.

관련 문제