2011-12-09 5 views
1

스크립트를 가지고 있습니다. linkchecker를 호출하여 약 10.000 개의 URL을 반복하며 http 상태 코드를 확인합니다. 선택하면 URL이 내 DB에 체크 된 것으로 표시됩니다. 완료 될 때까지 아무 것도 출력하지 않으므로 몇 시간이 걸릴 수 있습니다.백그라운드에서 PHP 스크립트를 실행하는 방법은 무엇입니까?

그래서 백그라운드에서 linkchecker를 실행할 다른 스크립트를 가지고있는 동안 DB를 계속 폴링하면서 몇 개의 URL을 검사했는지 확인하여 진행 상황을 추적하고 URL에 문제가있는 경우 연결 시간 등등.

나는 linkchecker를 iframe에서 실행하려했지만 linkchecker가 끝날 때까지 아무 것도로드하지 않습니다.

메인 스크립트가 정상적으로 실행되고 다른 작업이 실행되는 동안 백그라운드에서이 링크 확인기를 실행할 수 있습니까?

+0

포크를 시작 할 수 있도록? Google에서 해당 작업 방법을 확인하십시오. – bvd

+0

음. Cronjobs 마음에 봄, 여기. 'max_execution_time'은 iframe에서 스크립트를 실행할 때 결국 얻을 것입니다. –

답변

2

당신은 cron 작업을 설정 (리눅스를 실행하는 경우) 그 PHP 스크립트에 액세스 할 컬을 명령을 실행합니다 ('http://domain.com/php/something.php 컬'처럼 외부를) 또는 단지를 가리키는 PHP 명령을 실행해야 내부 파일.

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

0

DB에서 "확인 됨"이라고하는 열을 만듭니다. 데이터베이스에서 확인한 PHP 스크립트 업데이트 만하면됩니다. 데이터베이스를 그래픽으로 보려면 phpMyAdmin을 사용하고 "Checked"열을 정렬 한 다음 얼마나 멀리 왔는지 확인할 수 있습니다.

스크립트가 완료 될 때까지 웹 페이지가 업데이트되지 않으므로 이렇게해야합니다. 그러나 스크립트가 다른 스크립트를 실행하여 프로세스의 진행 정도를 알려주지 만 너무 많은 시간이 소요될 수 있습니다.

또한 php.ini로 가서 max_execution_time이 몇 시간으로 설정되어 있는지 확인해야합니다. 60 * 60 * 24 = 1day = 86 400 초.

희망이 도움이됩니다. 선택하지 않은 수가 0이 다음 에코 경우 :

0

나는 새 페이지에 AJAX 요청을 건의을 선택하지 URL을 (귀국일 번호) 이 있다면 바로 볼의 thuis 페이지에서

ajaxChecker.php

를 호출 할 수 있습니다 새로운 사업부

function checker() 
{ 
    $.post('ajaxChecker.php',function(data){ 
    if(data.length > 0) 
    $('#result').html(data); 
    }); 
} 

setInterval("checker()", 10000); 

그리고 물론의 출력은 아약스 또는 크론 작업을 통해 요청이 처음

관련 문제