Я работаю над простым сценарием, чтобы выбрать лучший сервер на основе.Скрипт отлично работает на моем компьютере, но 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, я не знаю, что именно происходит.Можете ли вы помочь мне решить эту проблему?
Большое спасибо.