이 주제가 여러 번 다루어졌지만 알고있는 솔루션이 PHP 7.x에서 작동하지 않는 것 같습니다 (예 : close a connection early 유사한 질문에 대한 비슷한 답변을 모두 표시하는 경우에도 동일하게 적용됩니다).백그라운드에서 PHP를 계속 진행하십시오. (클라이언트와의 연결을 닫은 후) PHP7 (!)
PHP 스크립트의 연결을 일찍 닫으므로 브라우저가 더 오래 실행되는 작업에서 멈추지 않습니다. 나는 PHP 5.x 서버 설정을 가지고 있는데, 이것은 수년간 훌륭하게 작동한다. 그러나 나는 PHP 7.x 설정에서 작동하도록 고심하고있다.
FastCGI와 함께 PHP를 실행하지 않기 때문에 fastcgi_finish_request()를 사용할 수 없습니다. 또한 명령 행 지향 솔루션 (exec 등)은 옵션이 아닙니다. 또한 pthread가 서버에 설치되어 있지 않기 때문에 스레드는 옵션이 아닙니다.
오래 동안 테스트 한 결과, PHP 5.x의 경우 스크립트를 계속 사용하면서 서버 구성에 따라 다른 "래서 피"가 필요하다는 것을 알았습니다. 일부 서버에 대한이 트릭을 않는 경우
header("Content-Length: 0");
ob_end_clean();
ob_end_flush();
echo(' ');
다른 구성은 동일을 달성하기 위해이 필요합니다 : PHP 7.x의와
header("Content-Encoding: none");
header("Content-Length: 0");
flush();
하지만, 나는 오른쪽을 마련하지 못했다 "레시피".
더 많은 행운이 있었거나 다른 해결책을 제안 할 수있는 사람이 있습니까?
연결을 닫고 배경 작업을 수행하는 데 필요한 트릭이 아닙니다. –