Cronjob неправильно запускает мой скрипт - PullRequest
1 голос
/ 26 марта 2019

Я работаю над простым сценарием, чтобы выбрать лучший сервер на основе.Скрипт отлично работает на моем компьютере, но 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 и вызовет server_status.php файл с $ _ POSTdata , скрипт обнаружит, что существует $ _ POST , и создаст файл на стороне сервера.На моем компьютере все работает, но crontab не создает файл на стороне сервера.

Я думаю, что проблема не связана с PHP, только с Javascript, я не знаю, что именно происходит.Можете ли вы помочь мне решить эту проблему?

Большое спасибо.

1 Ответ

0 голосов
/ 26 марта 2019

Используя такие браузеры, как SlimerJS или PhantomJS, вы сможете выполнять Javascript на стороне сервера.

...