Cronjob未正确运行我的脚本

时间:2019-03-26 04:28:44

标签: javascript php cron

我正在使用一个简单的脚本来选择最佳的服务器。该脚本可以在我的计算机上正常运行,但是crontab无法正常工作。

这是我的crontab规则:      * * * * * curl -s 'https://my-domain.com/server_status.php'

这是我的: server_status.php

<?php
if (isset($_POST['server_cdn'])) {
    if (!empty($_POST['server_cdn'])) {
        $path = '../player/server.txt'; 
        $f = fopen($path, "w+");
        fwrite($f, $_POST['server_cdn']); 
        fclose($f); chmod($path, 0777);
        exit();
    }
}
?>

<script>
$.getJSON("/player/servers.json", function(json) {
    var script_name = json.name;
    var script_version = json.version;
    var prefix = json.prefix;
    var _svrs = Object.keys(json.servers).length;
    var mach_available = {};

        for(i = 1; i <= _svrs; i++) {
            if (json.servers['server'+i].status == 1) {

                $.ajax({
                    url: "https://cdn" + json.servers['server'+i].cdn + "." + json.prefix + "/" + json.file,
                    type: 'POST',
                    async: false,
                    cache: false,
                    timeout: 7000,
                    error: function(){ mach_available['cdn' + json.servers['server'+i].cdn] = null; },
                    success: function(response){ 
                        mach_available['cdn' + json.servers['server'+i].cdn] = parseInt(response);
                    }
                });

            } else {
                mach_available['cdn' + json.servers['server'+i].cdn] = null;
            }
        }
        var min = Object.entries(mach_available).sort(function(x,y) {return x[1]-y[1]})[0];

        $.ajax({
            type: 'POST',
            url: '/player/server_status.php', 
            data: {"server_cdn": min[0]},
            async: true,
            success: function() { }
        }); 

    });
</script>

我的Javascript将加载.json文件并验证一些因素,然后,将从外部URL获取数据并使用 $ _ POST数据调用 server_status.php 文件,脚本将检测到 $ _ POST 存在,并在服务器端创建一个文件。一切都在我的计算机上运行,​​但是crontab不在服务器端创建文件。

我想这个问题与PHP无关,只有Javascript,我不知道到底发生了什么。您能帮我解决这个问题吗?

非常感谢您。

1 个答案:

答案 0 :(得分:0)

使用SlimerJS或PhantomJS之类的浏览器是实现此目的的方法,您将能够在服务器端执行Javascript。