2011-04-10 4 views
0

호스트 된 웹 솔루션과 사이트의 정보 백엔드를 업데이트하는 스크립트가 있습니다.크론 (cron) 작업에 대한 적극적인 해결책

내 웹 호스트는 cron을 허용하고 매 시간마다 wget을 만드는 스크립트를 만들었습니다.

스크립트는 가장 오래된 업데이트 된 게시물에 대해 업데이트 할 게시물이있는 db 테이블을 확인하고 업데이트합니다. 스크립트의 끝에서 두 번째 가장 오래된 업데이트 된 게시물과 같은 시간에 다시 같은 프로 시저를 수행하는 자바 스크립트 새로 고침을 사용하여 모든 게시물을 통해 실행할 수 있습니다. 브라우저에서 스크립트를 열면 제대로 작동하지만 호스트가 cron을 설정하면 javascrpt를 새로 고친 후 스크립트가 계속 실행되지 않습니다.

내 문장이 cron이 스크립트를 시작하게함으로써 멈출 때까지 작동하는 다른 새로 고침 솔루션으로 어떻게 해결할 수 있습니까?

는 (나는 모든 게시물 하나 pageload에서 업데이트 된 하나에서이 솔루션으로 변경하지만 시간이 초과하기 시작하기 때문에 나는이와 함께 갔다)

이 script.php

$limit=3600;  

//Select the oldest updated post 

if($last_update<$update_to_limit){ //check if the post was updated during this run 

     // Script that update the post and below the java refresh that repeats the script. 

    ?> 
     <script type="text/javascript"> 
       <!-- 
       window.location.href = "http://www.site.se/script.php" 
       //--> 
     </script> 
    <?php 
    }else{ 
     echo 'OK : All posts updated within the last : '.$limit.' s'; 
    } 
+2

크론 작업, 그들은 명령을 사용을 선. – Gazler

답변

1

를 Wget가 실행되지 않습니다 Javascript, 브라우저에서 코드를 열면 당연히 실행되므로 차이가 발생합니다.

나는 당신이 사용하려는 방법을 제안하지 않습니다. 정말로 원하면 wget을 PHP에서 다시 호출 할 수 있습니다. cURL을 사용하거나 심지어 header('Location..');으로 추측 할 수 있습니다. 그러나 한 번에이 문제를 해결하는 것이 훨씬 더 좋을 것입니다.

코드가 시간 초과 된 경우 PHP 코드가 작성된 방식을 다시 한 번 확인하고 시간이 많이 걸리지 않는 더 나은 솔루션을 찾으십시오. 그 다음 : DB가 충분히 좋고 인덱스가 설정되어 있는지 등입니다. 최적화 할 수 없거나 원하지 않는 경우 set_time_limit()을 사용할 수 있습니다.

(한 가지 더! 자바 = 자바 스크립트 당신이 그것을 단축하려면, 대신 자바의 JS 물품.)

가 브라우저를 사용하지 않는 자바 스크립트를 실행하지 않습니다
+0

PHP 헤더 ('위치')를 사용해보고 작동하길 바래요. 불행히도 php.ini를 바꿀 수는 없지만 시간 초과 된 코드는 오레티 좋은 생각입니다.하지만 한 번에 그렇게하고 싶다면 여러 가지 URL과 데이터를 가져 오는 것이 좋습니다. – Joseph

+0

@Joseph : 아직도'set_time_limit()'가 효과가 있습니다. – kapa

+0

일반적인 php.ini와 함께 호스팅 된 솔루션이므로 허용되지 않는다고 생각합니다. – Joseph

관련 문제