2012-05-24 4 views
0

가 나는, 내가 제 3 자 서비스에서 정보를 많이 수입하고 사용자 등록에백그라운드에서 .php 파일을 실행할 수 있습니까?

,

그러나 문제는 해당 페이지 인이 '가져 오기'를 실행하는 방법이,로드 많이 걸립니다 백그라운드에서 프로세스? 경량 페이지 :

감사

+0

아약스 호출로 정보를 가져 오는 것을 고려해 보니 페이지가 즉시 이동되고 정보가로드되는 동안 우아한 로더가 표시됩니다. – LoneWOLFs

+0

그냥 소리 내서 ... cron을 통해 서버에서 PHP 파일을 실행할 수 있습니다. 매 5 분마다 새로운 사용자가 등록되어 있는지 확인합니다. 그렇다면 가져 오기 프로세스를 시작할 수 있으며 프로세스가 완료되면 db 열에 "완료"표시가 나타납니다. 이 내용을 읽고 해당 정보를 표시 할 수 있습니다. –

+0

@LoneWOLFs 네,하지만 문제는 사용자가 아약스를 닫으면 프로세스가 중단됩니다. –

답변

1

당신은 두 단계로 등록 절차를 분해 할 필요 (그래서 사용자가 페이지를보고 너무 많이 기다린 아마 옆에 수입이 완료 될 새로 고침 할 필요가 없습니다) 가져 오기가 완료 될 때까지 기다리지 않고로드되는 스크립트와 무거운 것을 수행하는 또 다른 스크립트입니다. 첫 번째는 AJAX로 두 번째를 트리거합니다. 최종 결과는 작업자 스크립트가 완료 될 때 적절히 업데이트되는 "등록 처리 중"페이지입니다.

작업자 스크립트의 시작 부분에 ignore_user_abort을 호출 할 때주의해야합니다. 대기중인 페이지에서 사용자가 브라우저 창을 닫으면 등록 프로세스가 중단되지 않습니다.

+0

ignore_user_abort가 비동기 적으로 호출되어 사용자가 MAIN 탭을 닫더라도 스크립트를 실행할 수있게합니까? –

+0

@ ToniMichelCaubet : 서버가 염려하는 한 비동기 호출이나 메인 탭이 없습니다. 이들 모두는 고객의 관점에만 적용됩니다. – Jon

+0

오케이, 그렇습니다 ... ...? –

0

curl 명령을 실행하여 (예 : 'curl http://domain.com/php/something.php'과 같은 PHP 스크립트에 액세스하거나 내부 파일을 가리키는 php 명령을 실행하는) cron 작업 (Linux를 실행하는 경우)을 설정해야합니다.

매분 (cron 작업이 지원하는 최소 실행 시간)을 실행하고 작업의 "블록"을 실행하는 스케줄러를 만들 수 있습니다. 물론 기본적으로 사용되는 30 초 실행 제한을 건너 뛰도록 PHP를 설정해야합니다.

관련 문제