需要代码来执行存在于多个服务器上的单个php脚本(无需离开调用页面)

需要代码来执行存在于多个服务器上的单个php脚本(无需离开调用页面),php,Php,我的几个网站上都有一个updater.php脚本。此updater.php文件设置为在从home base my central服务器调用时执行代码 因此,我希望创建一个仪表板,其中列出了我的所有远程站点地址,其中包含指向updater.php脚本的路径,如下所示 www.server1.com/path/updater.php www.server2.com/path/updater.php www.server3.com/path/updater.php ...etc (there will

我的几个网站上都有一个updater.php脚本。此updater.php文件设置为在从home base my central服务器调用时执行代码

因此,我希望创建一个仪表板,其中列出了我的所有远程站点地址,其中包含指向updater.php脚本的路径,如下所示

www.server1.com/path/updater.php
www.server2.com/path/updater.php
www.server3.com/path/updater.php
...etc (there will be lots of them)
我将创建一个界面来列出这些选项,并在每个选项旁边添加复选框和全选选项,等等

我希望创建一个PHP脚本,该脚本将迭代该列表中的整个URL集合,并在每台服务器上执行对updater.PHP文件的调用,例如,将version=v001传递给它

$.get("http://server1.com/path/updater.php?version=v001");
$.get("http://server2.com/path/updater.php?version=v001");
...etc
我已经在updater.php文件中设置了代码,该文件驻留在我所有的站点中,因此当它收到请求时,它会解析$_GET['version'],以查看版本是什么,并且它知道在我的中央服务器上获取哪个文件来执行更新

我只是在寻找一些线索,如何为这个仪表板创建脚本,让它运行起来


PS:总的来说,这基本上是一个批处理更新程序脚本,它执行wordpress主题更新,而不必去每个站点单独进行更新。

您可能需要检查PHP的扩展,它允许您非常轻松地向脚本中的多个站点发送请求

如果您需要进一步的帮助,请告诉我-我会编辑

编辑

您可以使用其中一个javascript框架来轻松管理AJAX调用,即最严格的jQuery-imho。然后做类似的事情:

<form name="updater" id="updater" ...>
    <input type="checkbox" name="server[]" value="0"/> Server 1
    <input type="checkbox" name="server[]" value="1"/> Server 2
    ...
</form>

<script type="text/javascript">
    var server_url = [
        'www.server1.com/path/updater.php',
        'www.server2.com/path/updater.php',
        'www.server3.com/path/updater.php'
    ];

    $('#updater').bind('submit', function() {
        $('input[name="server[]"]:checked', this).each(function() {
            $.get(server_url[this.value]);
        });
    });
</script>

给你

看起来您正在使用jQuery,AJAX可以调用脚本而不是PHP脚本。如果不是这样,忽略这个

单击GO按钮时,使用javascript获取所有选中复选框的值。通过这些循环,执行$.get操作。这应该是你需要做的全部


或者,您可以捕获get调用的响应并更新status div,让您知道它们是否都成功运行。

我认为不需要javascript。老实说,如果你不太相信php的功能,我会扔掉一堆iframe标签,这些标签指向合适的URL。让浏览器执行请求。iFrame的好处在于,您可以让远程脚本输出成功或错误消息

您不能单独使用jQuery来完成这项工作,因为它不具备跨站点脚本编写的能力

<?php

    if($_SERVER['REQUEST_METHOD'] == "POST")
    {
        // Run through each 
        foreach($_POST['servers'] as $serverHost)
        {

            // Now contact the server.
            // if getting urls is disabled (which some hosts do)
            // you can use CURL to connect to the server.
            $result = file_get_contents($serverHost);
        }
    }
?>
<form method="post" >
    <input type="checkbox" name="servers[]" value="http://foo1.com/updater.php" />
    <input type="checkbox" name="servers[]" value="http://foo2.com/updater.php" />
    <input type="checkbox" name="servers[]" value="http://foo3.com/updater.php" />
    <input type="checkbox" name="servers[]" value="http://foo4.com/updater.php" />
    <input type="checkbox" name="servers[]" value="http://foo5.com/updater.php" />
    <input type="submit" />
</form>

谢谢你。这将在野外部署,因此我希望确保我使用的任何方法都能在许多共享服务器环境中得到广泛支持,主要是bluehost和hostgator,但还有其他的。@aefxx:我在想,如果我能在do while或for循环中执行php$.get命令,也许Ajax例程可以做到这一点。我不认为我应该等待服务器响应,只需要在每个远程updater.php文件上启动进程。只需确保不会留下一个巨大的安全漏洞:updater.php文件设置为执行代码。谢谢chelmertz。代码非常有限,因为它检查我的服务器的特定位置和特定文件。一旦获得该文件,它就会将其解压到它所在的同一目录中。它在调用文件中查找的唯一参数是版本号,它应该始终是一个4位数的值,我将检查以确保这是真的。如果你能看到任何可能的漏洞,我将不胜感激。