2008-11-25 7 views
7

PHP에서 간단한 업데이트를 집중적으로 수행해야하는 간단한 애플리케이션을 작성하고 있습니다. 특히 사용자가 지연을 일으키지 않기를 바랍니다. 그래서 pcntl_fork()를 사용하는 것에 대해 궁금합니다.PHP/Apache에서 프로세스 포크를 만드는 것이 좋은 생각입니까?

이것이 실제로 어떻게 작동하는지 잘 모르겠습니다. 부모 프로세스가 완료된 후 하위 프로세스가 계속 실행됩니까? 자식 프로세스가 완료되기 전에 부모 프로세스가 종료되고 사용자의 페이지로드가 완전히 완료됩니까?

즉, Apache에서 실행되는 PHP 스크립트를 사용하는 것이 사용자를 지체하지 않고 시간을 많이 소비하는 업데이트를 수행하는 안전한 방법입니까, 아니면 사용자에게 약간 지연을달라고 요청해야합니까?

+0

질문 제목에서 프로세스를 포기한다는 뜻을 분명히하십시오. 처음에 프로젝트를 포크로 찍고 싶다고 생각했습니다. –

+0

phjr에서 동의하십시오. 누군가 제목을 편집 할 수 있습니까? – OIS

답변

3

상위 프로세스가 종료되고 사용자 페이지가 완전히로드되고 하위 프로세스가 계속되며 하위 프로세스가 성공적으로 완료되었는지 여부에 대한 피드백이 사용되지 않습니다.

1

누군가가 아파치에서 호출 할 때 일어날 일을 자세히 설명 할 수는 있지만 사용하는 아파치와 PHP의 버전과 조합에 따라 항상 맞는 답변을 얻을 수 있습니다. 당신은 아약스를 사용해야하며 두 가지 요청을해야합니다. 당신이하고있는 일을 말하는 페이지로 한 번 응답 한 다음, 아약스 전화로 상태에 대한 두 번째 요청과 실제로 작업 한 위치를 폴링합니다.

0

PHP가 mod_php 모듈 포크로 아파치에서 실행되면 전혀 작동하지 않으므로 * pcntl_fork() * 함수가 정의되지 않았다고 경고합니다. 이 경우 좋은 해결책은 exec() 대신 명령 줄을 사용하여 별도의 PHP 작업을 실행하는 것입니다.

0

나는 나쁜 생각이라고 생각합니다. 나는 비슷한 것들을했고, 아파치는 부모의 자식을 그 자식에게 보낸다. 즉, 브라우저가 하위 프로세스 중 하나의 정보를 표시합니다.
자세한 내용은 this을 클릭하십시오.
희망이 있습니다.

관련 문제