2011-04-10 65 views
0

活着的解決方案我有一個託管websolution和更新網站信息後臺的腳本。保留了cron作業

我的虛擬主機提供商允許cron和我已經提出,wget的對每個小時的腳本。

腳本檢查與職位,以更新的最古老更新的帖子和更新數據庫表。在腳本的最後,我使用JavaScript刷新再次執行相同的過程,這次是第二個最早更新的帖子,等等,直到所有帖子都運行完畢。如果我在瀏覽器中打開腳本,它可以正常工作,但是當我的主機設置了cron時,腳本在javascrpt刷新後不會繼續。

我如何與另一個刷新解決方案,將工作,直到我的發言只是讓cron的啓動腳本停止它解決這個問題?

(我改變了這種解決方案從一個地方的所有帖子都在一個頁面加載更新,但因爲它啓動超時我這一去)

的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

Cron作業,因爲他們不使用瀏覽器將無法執行JavaScript,他們使用的命令線。 – Gazler 2011-04-10 15:24:56

回答

1

的Wget將無法運行Javascript,如果你從瀏覽器打開你的代碼,它當然會運行它,這是差異的原因。

我真的不建議你嘗試使用的方法。如果你真的想,你可以再次致電wget從PHP,使用cURL或我猜即使header('Location..');。但一回合解決這個問題會更好。

如果你的代碼超時,我會重新檢查PHP代碼編寫的方式,並試圖找到一個更好的解決辦法,就是不那麼費時。之後:DB是否足夠好,是否設置了索引等等。或者,如果您無法優化它(或者您不想),則可以使用set_time_limit()

(還有一兩件事:Java的Java腳本=如果你想縮短,寫的js而不是Java。)

+0

我會嘗試PHP頭('位置'),並希望它的作品。 php.ini我不能改變,超時代碼是我認爲的好,但它涉及從extarnal網址獲取數據,以及如果我想一次執行多個數據。 – Joseph 2011-04-10 16:15:55

+0

@Joseph:但是,'set_time_limit()'可以爲你工作。 – kapa 2011-04-10 21:24:53

+0

我不認爲我被允許,因爲它是一個常見的php.ini託管的解決方案 – Joseph 2011-04-11 10:20:26