>  기사  >  백엔드 개발  >  디스플레이 배경 프로그램에서 생성된 파일을 실시간으로 처리하는 방법은 무엇입니까?

디스플레이 배경 프로그램에서 생성된 파일을 실시간으로 처리하는 방법은 무엇입니까?

WBOY
WBOY원래의
2016-10-10 11:56:111335검색

질문

저는 프런트엔드에서 매개변수를 받은 후 백그라운드에서 계산 프로그램을 호출하고 이러한 매개변수를 기반으로 그림을 생성하는 기능을 하는 PHP 프로그램을 작성하고 있습니다. (이 프로세스에는 약 2초 또는 2초 정도 소요됩니다.) 더).
마지막으로 인터페이스에서 이미지가 생성될 때까지 기다린 다음 해당 이미지를 div에 표시해야 합니다.
문제는 이미지 생성 중에 인터페이스가 응답하지 않는 상태라는 것입니다.
또한 프로그램이 실행되지 않고 이미지가 생성되지 않으면 알 수 없습니다.

시도해 볼 수 있는 솔루션

제가 지금 사용하고 있는 해결책은 setInterval을 사용하여 매초마다 폴링하여 이미지가 생성되었는지 확인하는 것입니다. 그렇다면 이미지의 URL을 프런트 엔드의 대상 img 태그에 전달합니다. 10초 이내에 URL을 얻지 못하면 생성에 실패한 것으로 판단됩니다.

하지만 이 방법은 너무 어리석고 실패하면 알기까지 시간이 오래 걸릴 것 같아요.

그래서 묻고 싶습니다. 이 처리 프로세스에 대한 사용자 경험을 더 좋게 만들 수 있는 좋은 제안이나 좋은 구현 방법이 있습니까?

답글 내용:

질문

저는 프런트엔드에서 매개변수를 받은 후 백그라운드에서 계산 프로그램을 호출하고 이러한 매개변수를 기반으로 그림을 생성하는 기능을 하는 PHP 프로그램을 작성하고 있습니다. (이 프로세스에는 약 2초 또는 2초 정도 소요됩니다.) 더).
마지막으로 인터페이스에서 이미지가 생성될 때까지 기다린 다음 해당 이미지를 div에 표시해야 합니다.
문제는 이미지 생성 중에 인터페이스가 응답하지 않는 상태라는 것입니다.
또한 프로그램이 실행되지 않고 이미지가 생성되지 않으면 알 수 없습니다.

시도해 볼 수 있는 솔루션

제가 지금 사용하고 있는 해결책은 setInterval을 사용하여 매초마다 폴링하여 이미지가 생성되었는지 확인하는 것입니다. 그렇다면 이미지의 URL을 프런트 엔드의 대상 img 태그에 전달합니다. 10초 이내에 URL을 얻지 못하면 생성에 실패한 것으로 판단됩니다.

하지만 이 방법은 너무 어리석고 실패하면 알기까지 시간이 오래 걸릴 것 같아요.

그래서 묻고 싶습니다. 이 처리 프로세스에 대한 사용자 경험을 더 좋게 만들 수 있는 좋은 제안이나 좋은 구현 방법이 있습니까?

  • 간단하게 로딩 인터페이스를 만들 수 있습니다. 회전하는 GIF를 찾아 div를 채우면 됩니다.

  • 이미지 생성 여부를 쿼리하려면 websocket을 사용하는 것이 좋습니다.

  • 또 다른 제안은 이미지를 생성하는 프로그램에서 이미지가 성공적으로 생성되는지 확인하는 것입니다. 그렇지 않은 경우 오류를 나타내는 이미지를 생성하면 이미지가 프런트 엔드로 전송됩니다.

여기서 핵심은 '10초 이내에 피드백이 없으면 실패한 것임에 틀림없다'라는 논리를 사용하지 않는 것이 가장 좋다는 것입니다. 그러나 백그라운드가 실패하면 오류 처리 코드 블록이 즉시 호출되고 사용자에게 실패를 알리는 메시지가 반환됩니다. PHP나 Python에서 어떻게 처리되는지 잘 모르겠습니다.

<code>try: #尝试执行下面代码,若失败,执行except里的代码
    # 这里写创建图片的逻辑,image = ...
    return success(message='Done.',data=image) #返回成功消息和图片 
except Exception as ex:  #若发生错误
    logger(ex) #记录错误文档
    return fail(message='Error.') #马上返回失败消息,而不是等10秒</code>

Ajax를 해결할 수 있고 성공 및 실패 콜백이 처리되며 새 버전에도 시간 초과 처리 기능이 있습니다

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.