2013-03-18 2 views
0

을 피하기 위해 나는이 웹 사이트의 일부 페이지를 PDF로 사용되는 다음 스크립트 :분할 PHP 스크립트는 시간 제한

내가 스크립트 전에 서버 시간을 더 많은 페이지를 추가하면 내가 가진 문제가
<? 
    include_once('phpToPDF.php') ; 
    phptopdf_url('http://www.example.com/csb04-termination-box/?style=alt' ,'pdf/', 'csb04-termination-box.pdf'); 
    phptopdf_url('http://www.example.com/csb05-termination-box/?style=alt' ,'pdf/', 'csb05-termination-box.pdf'); 
    phptopdf_url('http://www.example.com/csb06-compact-termination-box/?style=alt' ,'pdf/', 'csb06-compact-termination-box.pdf'); 
    echo 'Done'; 
?> 

완료되었습니다. set_time_limit(0);을 변경하려고했지만 공유 호스팅에서 도움이되지 않았습니다.

끝낼 수 있도록 스크립트를 수정하는 가장 좋은 방법은 무엇입니까? 나는 그것을 여러 스크립트로 나눠서 Ajax를 통해 실행하려고 시도했지만 고려해야 할 사전 경험이없는 곳부터 시작해야 할지도 모른다고 생각했습니다.

답변

3

가장 쉬운 방법은이 될 것이라고해야 할 일 :

include_once('phpToPDF.php') ; 
$i = isset($_GET['i']) ? intval($_GET['i']) : 0; 

if ($i == 0) phptopdf_url('http://www.example.com/csb04-termination-box/?style=alt' ,'pdf/', 'csb04-termination-box.pdf'); 
if ($i == 1) phptopdf_url('http://www.example.com/csb05-termination-box/?style=alt' ,'pdf/', 'csb05-termination-box.pdf'); 
if ($i == 2) phptopdf_url('http://www.example.com/csb06-compact-termination-box/?style=alt' ,'pdf/', 'csb06-compact-termination-box.pdf'); 

if ($i < 3) header('Location: ?i=' . ($i + 1)); 
echo 'Done'; 

기본적으로이 Ajax를 사용하지 않고, 당신의 웹 브라우저가 계산을 수행 할 수 있습니다. 하나 개의 요청이 완료되면 카운터 ($i가) 모든 파일을 한 번에 하나씩 처리하기 위해 다음 스크립트 3

+0

매우 정말로 좋았어. – Bart

+0

완벽하게 작동합니다. 감사합니다! –

+0

진행 상황을 쉽게 화면에 업데이트 할 수있는 방법이 포함되어 있습니까? 첫 번째 메시지 처리 후 echo'1/3 '처럼 ... –

0

사용가 될 때까지, 브라우저가 자동으로 다음 페이지를로드 :

include_once('phpToPDF.php') ; 

$urls = array(); 
$urls[] = array('http://www.example.com/csb04-termination-box/?style=alt', 'csb04-termination-box.pdf'); 
$urls[] = array('http://www.example.com/csb05-termination-box/?style=alt', 'csb05-termination-box.pdf'); 
$urls[] = array('http://www.example.com/csb06-termination-box/?style=alt', 'csb06-termination-box.pdf'); 
// add here more elements in $urls if needed 

if(!isset($_GET['n'])) 
    $n = 0; 
else 
    $n = intval($_GET['n']); 

if(isset($urls[$n])) 
{ 
    phptopdf_url($urls[$n][0] ,'pdf/', $urls[$n][1]); 
    header('Location: ?n='.($n+1)); // calls the conversion of the next file in the $urls array 
} 
else 
    echo 'Done';