为cron工作保持活力解决方案

时间:2011-04-10 15:21:53

标签: php javascript cron wget

我有一个托管的websolution和一个更新网站信息后端的脚本。

我的webhost允许cron,我已经制作了一个每小时都可以使用的脚本。

该脚本检查db-table是否包含要更新的帖子以获取最新更新的帖子并进行更新。在脚本的最后,我使用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'; 
    }

1 个答案:

答案 0 :(得分:1)

Wget不会运行Javascript,如果你从浏览器打开你的代码,它当然会运行它,这就是差异的原因。

我真的不建议您尝试使用的方法。如果你真的想要,你可以再次从PHP拨打wget,使用cURL或者我甚至可以header('Location..');。但是在一个回合中解决这个问题会更好。

如果您的代码超时,我会重新检查编写PHP代码的方式,并尝试找到更好的解决方案,这不是那么耗时。之后:数据库是否足够好,索引是否设置等等。或者,如果您无法对其进行优化(或者您不希望),则可以使用set_time_limit()

(还有一件事:Java!= Javascript。如果你想缩短它,写js而不是java)