나중에 상태를 확인하기 위해 Proc_Open에서 프로세스 리소스를 저장하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/949437

문제

나는 Sh를 실행하고있다 스크립트 a 자바 프로세스를 통해 PHP ~에 우분투 섬기는 사람. 프로세스를 실행하기 위해 Proc_open을 사용하고 있습니다. 일반적으로 워크 플로는 다음과 같습니다.

  • 페이지를 요청하십시오 ->
  • 스크립트가 실행됩니다 (완료 될 때까지) ->
  • 결과 페이지.

내 경우에는 스크립트가 병렬로 실행되므로 스크립트가 완료 될 때까지 서버가 대기하지 않으므로 (때때로 몇 시간이 걸리므로) 나중에 그 자원을 저장해야합니다 (프로세스의 상태 또는 프로세스의 상태 그냥 중지).

리소스 유형은 "프로세스"이고이 기능을 사용했습니다. get_resource_type 그것을 얻기 위해.

이 경우 Serialize는 작동하지 않습니다 - 리소스는 예외적입니다 (당신은 당신은 볼 수 있습니다. http://il2.php.net/manual/en/function.serialize.php 매개 변수 내부).

내 목표는 좋은 프로세스 처리입니다. 누군가가 프로세스 처리를 위해 어떻게 자원을 사용할 수 있는지 알고 있습니까?

도움이 되었습니까?

해결책

PHP에서 나중에 사용할 수있는 리소스 유형을 저장할 수 없습니다. 당신이해야 할 일은 어떤 형태의 비동기 통신을 구현하는 것입니다 - 아마도 파일은 상태 정보를 작성하고 다른 하나는 읽는 메모리, 공유 메모리, 명명 된 파이프 등을 구현하는 것입니다.

나는 조사 할 것이다 PCNTL 확장. 힌트 : 보안상의 이유로 웹 서버 환경 내에서 포킹은 불가능합니다.

다른 팁

내 경우에는 스크립트가 병렬로 실행되므로 스크립트가 완료 될 때까지 서버가 기다리지 않습니다 (때때로 몇 시간이 걸리므로 할 수 없습니다).

그 자체로는 문제가되지 않아야합니다. 웹 서버에서 시작되지 않는 한 PHP 프로세스를 쉽게 가질 수 있습니다. 웹 응용 프로그램에서 프로세스를 시작 해야하는 경우 데이터베이스 테이블에 항목을 삽입 한 다음 Cronjob에 스크립트를 실행 하여이 대기열을 확인하고 처리를 수행하는 것이 좋습니다.

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