2011-04-10 64 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