我正在使用一个简单的脚本来选择最佳的服务器。该脚本可以在我的计算机上正常运行,但是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,我不知道到底发生了什么。您能帮我解决这个问题吗?
非常感谢您。
答案 0 :(得分:0)
使用SlimerJS或PhantomJS之类的浏览器是实现此目的的方法,您将能够在服务器端执行Javascript。