웹 응용 프로그램의 백엔드 (간단한 램프 설정)에 대한 보고서를 생성하는 간단한 C++ 응용 프로그램이 있습니다. 문제는 백엔드가 메모리에서 약 1.5GB를 차지하는 데이터 파일을로드한다는 것입니다. 여러 사용자가 동시에 여러 프로그램을 실행하는 경우에는 확장되지 않습니다. 따라서 내 생각에 여러 프로그램으로 분할하는 것이 좋습니다.
프로그램 A는 항상 서버에서 실행되는 기본 실행 파일이며 항상로드 된 데이터가 있습니다. 실제로 보고서를 실행할 수 있습니다.
프로그램 B는 PHP에서 생성되며 A 프로그램에 필요한 정보를 얻기 위해 간단한 요청을하고 데이터를 반환합니다.
내 질문은 다음과 같습니다. B에게 A에게 무언가를하도록 요청하는 좋은 방법은 무엇입니까? A가없는 경우 어떻게 작동해야합니까? 나는 정말로 작업을 위해 폴링하거나 그렇지 않으면 내 타이어를 돌리고 싶지 않습니다.C++의 프로세스 간 통신
답변
명명 된 뮤텍스/이벤트를 사용하면 기본적으로 하나의 스레드 (사용자의 경우 프로세스 A)가 기다리고 기다리는 것을 허용합니다. 그런 다음 프로세스 B가 진행되고 무언가 완료 될 필요가 있고 프로세스 A를 깨우는 뮤텍스/이벤트를 알리고 작업을 진행합니다.
당신은 마이크로 소프트에있는 경우 :
IPC가 다르게 작동하지만, 같은 기능이 있습니다
또는 다른 방법으로, C를 들어 ++ 당신 부분 멀티 플랫폼 인 boost IPC 라이브러리 중 하나를 사용할 수 있습니다. 나는 PHP가 무엇을 사용할 수 있는지 잘 모르겠지만 의심 할 여지가 뭔가 동등한 것입니다.
+1 네트워크 카드를 칠 필요가 없습니다. 특히 동일한 상자에서 웹 서버를 실행하는 경우에는 특히 그렇습니다. – Alex
+1 부스트 프로세스를 언급합니다. http://www.boost.org/doc/libs/1_39_0/doc/html/interprocess.html – Laserallan
감사! Boost 메시지 대기열 쌍을 사용하려고합니다. – captncraig
localhost
에서 실행되는 TCP 소켓을 사용하십시오.
- C++ 응용 프로그램을 데몬으로 설정하십시오.
- PHP 프론트 엔드는 데몬에 대한 지속적인 연결을 생성합니다. pfsockopen
- 요청이있을 때, PHP는 데몬에게 요청을 보내서 데몬에게 모든 요청을 처리하고 보냅니다. PHP SocketsC++ Sockets
편집
추가를 참조 할 수 있도록 몇 가지 링크. 이 정말 좋지 않을 수도 있습니다. 어딘가에 프로세스 간 통신 소켓을 사용하는 C 코드이지만 아무 것도 쓸모가 없습니다.
재미있는 것 같습니다. 그러나 오히려 내게 외딴 소리. 이 사용에 대한 좋은 참조 나 예를 알고 있습니까? – captncraig
IPC는 C++에서 쉽게 사용할 수 있으며 POSIX C API를 호출하기 만하면됩니다.
그러나 여러분이 묻는 것은 큐 관리자가 훨씬 잘 처리 할 수 있습니다. 백그라운드 데몬이 대기열에있는 메시지를 기다리도록하고 프론트 엔드 PHP는 처리하고자하는 작업의 스펙을 추가합니다. 일부 큐 관리자는 타스크의 결과를 동일한 오브젝트에 추가하거나 완료 메시지에 대한 새 큐를 정의 할 수 있습니다.
가장 잘 알려진 고성능 큐 관리자 중 하나는 RabbitMQ입니다. 아주 사용하기 쉬운 또 하나는 MemcacheQ입니다.
또는 작업을 위해 MySQL에 테이블을 추가 할 수 있습니다. 백그라운드 프로세스는 주기적으로 미완성 테이블을 쿼리합니다. 이것은 작동하며 매우 안정적 일 수 있지만 (가끔씩 빈민굴 대기열이라고도 함) 높은 작업/초로 고장납니다.
그래, 메시지 큐가 내가 사용하기를 원하는 것처럼 들린다. 메시지가 없을 때 백그라운드 프로세스가 블로킹 할 수있게 해주고 그렇지 않으면 잘 작동 할 것입니다. 감사! – captncraig
- 1. 간단한 프로세스 간 통신
- 2. 자바 프로세스 간 통신
- 3. 파이썬 프로세스 간 통신
- 4. 프로세스 간 통신
- 5. 프로세스 간 통신
- 6. .net과의 프로세스 간 통신
- 7. Java 프로세스 간 통신
- 8. 프로세스 간 C# 통신
- 9. 언어/운영 체제 간 프로세스 간 통신
- 10. Win32 서비스와의 프로세스 간 통신
- 11. 프로세스 간 통신/브로드 캐스트
- 12. 여러 node.js 프로세스 간 통신
- 13. 루아와 C와의 프로세스 간 통신
- 14. 파이프를 사용하는 프로세스 간 통신
- 15. Qt4에서 간단한 프로세스 간 통신
- 16. 가장 적합한 호환 프로세스 간 통신 프로토콜
- 17. SQL Server 프로젝트에서 프로세스 간 통신
- 18. 안드로이드와 C# 간의 프로세스 간 통신
- 19. WCF와 F를 사용하는 프로세스 간 통신 #
- 20. 프로세스 간 통신 (IPC)의 예
- 21. C#에서 LAN 프로세스 간 통신?
- 22. 응용 프로그램 간의 통신 (프로세스 간)?
- 23. 피어 투 피어 프로세스 간 통신
- 24. 연속 프로세스로 PHP 내의 프로세스 간 통신?
- 25. 프로세스 간 통신 계층 설계에 도움이 필요합니다.
- 26. 두 응용 프로그램 간의 프로세스 간 통신
- 27. 클래스 간 통신
- 28. 원격 프로세스 통신
- 29. Objective-C의 SSLv3 통신
- 30. .NET Outlook 추가 기능 및 WCF/프로세스 간 통신
죄송합니다 ...이 모든 것이 Linux에서 실행 중입니다. – captncraig
램프를 언급했기 때문에 linux 태그를 추가했습니다. IPC는 플랫폼에 따라 다르기 때문에 이것이 중요합니다. –