2014-04-12 2 views
4

긴 루프 (PHP - 데이터베이스 내보내기/가져 오기 mysqli) 중에 진행 막대 (html)를 업데이트하려면 어떻게합니까긴 루프 동안 진행률 막대를 업데이트하려면 어떻게해야합니까?

임시 값 또는 진행을 저장하기 위해 파일이나 데이터베이스를 사용하고 싶지 않습니다. 루프가 너무 많은 입출력을 사용하게됩니다. (파일 기반 솔루션의 경우 클라이언트가 데이터를 쓰기 전에 파일을 읽는 경우가 많습니다.)

출력 버퍼링이 필요하지만 너무 길어 디스플레이를 업데이트 할 수 없습니다.

둘째, 다른 사람들이 브라우저에서 자바 스크립트를 뱉어내는 방법을 고려하고 있었지만 너무 많은 HTML이 출력되었습니다 (일명 1,000,000 개가 넘는 레코드가 덤프 됨).

기본적으로 웹 브라우저에서 진행률 표시 줄을 업데이트 할 수있는 방법에 대한 신선한 아이디어가 열려 있습니다. PHP에서 몇 가지 정말 긴 프로세스가 진행되고 있습니다. (이것은 file_upload 파일이 아닙니다. 진행을 얻는 것을 허용하지만, 서버 루프의 진행을 얻는 것에 대해서는 아무것도 보이지 않습니다.)

어떤 아이디어 ?? --- PHP/JavaScript/HTML에서 node.js/cocoa /와 같은 다른 플랫폼으로 벗어나고 싶지 않습니다.

+0

위에서 설명한 요구 사항을 감안할 때, 웹 소켓을 권장 할 수 있습니다. 즉, WebSocket을 구현하는 것은이 한 가지 특별한 솔루션을 구현하는 데는 비실용적입니다. – Ohgodwhy

+0

임시 값 [...]을 저장하기 위해'[...] 파일이나 데이터베이스를 사용하지 마십시오. 청크 분할 인코딩을 사용하면 데이터를 처리하는 동안 서버에서 수행하는 모든 단계를 업데이트해야합니다. 사용자에게 알리고 싶을 때만 값을 갱신해야합니다. 예 : '1,000,000' 레코드를 처리하면'1,000' 또는'10,000' 레코드의 상태를 업데이트하게됩니다. –

+0

@ t.niese - 전에 파일 쓰기 전에'$ x % 10000'을 시도해 보았습니다. 그러나 파일 열기, 지우기, 닫기 사이의 짧은 순간으로 인해 클라이언트 측에서 실패한 읽기 (빈 파일) 쓰기 및 저장. –

답변

1

스크립트의 실행 진행 상황에 따라 내용을 플러시 할 수 있습니다. 당신은 다른 아이디어를 obtaing 수

: 여기

가 문제를 해결할 수 있습니다 좋은 코드 샘플에 대한 몇 가지 유용한 링크입니다 이 주제는 여기에서 : Show progress for long running PHP script

+0

매우 유망한 것으로 보입니다. 바로 첫 번째 링크였습니다. 이것들을 시험해보기 위해 조금만주세요. 이것은 확실히이기는 응답 tho 같이 보인다. –

+0

# 1은 작동하지만, JavaScript를 페이지에 출력합니다. 지금까지 최고의 솔루션처럼 보인다. –

+0

좋은 = D 잘 알려주세요.) –

관련 문제