문제

나는 모든 페이지 요청에 대해 웹 서버(예:Apache)는 메모리에 스크립트의 새 인스턴스를 생성합니다.이러한 인스턴스가 실행되는 동안 서로 통신할 수 있습니까?데이터도 전달하나요?

도움이 되었습니까?

해결책

PHP의 스크립트간에 데이터를 전달하려면 Memcached 또는 데이터베이스를 사용하는 것이 좋습니다. 또는 아마도 APC.

스크립트가 동일한 세션에 속하는 경우 세션을 통해 이론적으로 통신 할 수 있지만 대부분의 경우 하나의 스크립트 만 세션에 한 번에 액세스 할 수 있기 때문에 대부분의 경우 일방 통신이 효과적입니다 (Session_Start ()는 세션을 그 때까지 잠금합니다. 스크립트는 세션을 암시 적으로 또는 명시 적으로 종료합니다).

다른 팁

나는 Martin과 Cletus의 제안이 타당하다고 믿습니다.내 선택은 스크립트의 최종 목표에 맞는 기능입니다.

  • 얼마나 많은 데이터를 던질 것인가?외부 프로세스의 오버헤드를 처리할 수 있습니까?
  • 어떤 종류의 데이터를 교환하고 있나요?정규화됐나요?아니면 이제 정규화할 가치가 있나요?
  • 나중에 해당 데이터를 참조해야 합니까?아니면 처리 후 폐기해도 되나요?
  • 해당 스크립트가 다른 서버에서 실행됩니까?

  • 잠금 메커니즘이 있는 플랫 파일

  • 관계형 DB
  • 문서 DB(영구 여부에 관계없이 키/값 저장소)
  • 공유 메모리(APC 또는 핵심 기능)
  • 메시지 대기열(활성 MQ 및 회사)

메시지/데이터를 관리하는 둘 이상의 시스템과 이를 생성/소비하는 둘 이상의 시스템을 가질 수 있으므로 프로세스를 외부화하면 가장 많은 가치를 얻을 수 있다고 생각합니다.

PHP 스크립트가 작동하는 모델에는 실제로 해당 스크립트에 대한 메모리의 지속성 개념이 포함되어 있지 않습니다. 일반적으로 요청 된 페이지를 제공하는 데 필요한 최소 시간 동안 만 실행되도록 설계되었습니다. 이는 일반적으로 페이지가 제공되면 스크립트가 더 이상 할 일이 없기 때문에 해당 스크립트간에 상태의 의사 소통에 의미있는 사용을하기가 어렵습니다. 따라서 일반적으로 PHP 스크립트 간의 통신은 데이터베이스 항목 등의 조작을 통해 더 많이 수행됩니다.

데이터를 전달하려는 일종의 지속적인 처리가있는 경우 Servlets와 같은 다른 웹 응용 프로그램 모델을 살펴볼 수 있습니다.

여기에 설명 된대로 공유 메모리 로이 작업을 수행 할 수 있어야합니다. http://blog.taragana.com/index.php/archive/how-to-use-shared-mory-in-php/ (창에서 실행되지 않는다고 가정)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top