(Arama sayfayı terk etmeden) birden fazla sunucu üzerinde bulunan tek bir php komut dosyası çalıştırmak için kodu gerekir

4 Cevap

Benim sitelerin birkaç bulunan bir updater.php senaryo var. Bu updater.php dosya bir ana üs (benim merkezi sunucu) çağrıldığında kod çalıştırmak için ayarlanır.

Yani ben bütün uzak site adresleri şöyle bu updater.php script yolu ile, listelenen hangi tür bir pano oluşturmak için arıyorum ...

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)

Ve ben her birinin yanındaki onay kutularını ile birlikte bu listeye bir arayüz oluşturmak ve seçkin bir bütün, vb olacak

Ve ben o listedeki URL'ler tüm koleksiyon üzerinde yineleme ve bunu örneğin bir "version = v001" geçen her sunucuda updater.php dosyaya aramayı yürütecek bir PHP komut dosyası oluşturmak için arıyorum ...

$.get("http://server1.com/path/updater.php?version=v001");
$.get("http://server2.com/path/updater.php?version=v001");
...etc

Bu bir istek aldığında, bu ['versiyonunu'] $ _GET ayrıştırır ki ben zaten sürümü ne olduğunu görmek için updater.php (tüm sitelerinde bulunan dosyası) kodu kurdum ve o bilir hangi güncelleştirme gerçekleştirmek için benim merkezi bir sunucu üzerinde gidip dosyası.

Ben sadece hareket halinde tüm ayarlar bu pano için komut dosyası oluşturmak için nasıl bazı ipuçları arıyorum ...

PS: Toplamda, bu temelde her siteye gidin ve bunları tek tek yapmak zorunda kalmadan wordpress teması güncellemeleri yürüten bir toplu updater betik.

4 Cevap

Size oldukça kolay komut dosyası içinde birden fazla sitelerine isteği göndermek için izin verir PHP'nin cURL uzantısını kontrol etmek isteyebilirsiniz.

Daha fazla yardıma ihtiyacınız varsa, bana bildirin - Ben düzenlemek edeceğiz.

EDIT

Eğer kolayca AJAX çağrıları (- en sıkı imho yani jQuery) yönetmek için izin verecek javascript çerçeveler birini kullanabilirsiniz. Ardından benzer bir şey yapın:

<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>

Buyrun!

JQuery kullanarak ve AJAX yerine bir PHP komut daha komut dosyalarını aramak için gayet iyi olduğunu konum gibi görünüyor. Bu durumda değilse, bu görmezden.

Lütfen "GO" butonuna tıklandığında, tüm işaretli onay kutularını değerlerini almak için javascript kullanın. $ Yapıyor bu, döngü. () Şey olsun. Yapmanız gereken tek şey olmalıdır.

İsteğe bağlı olarak, get () çağrıları yanıtları yakalamak ve hepsi başarıyla çalıştırıldığını olup olmadığını bildirmek için bir durum div güncelleme olabilir.

Javascript için gerek görmüyorum. Dürüst olmak gerekirse, ben sadece php yeteneklerine güvenerek üzerinde titrek eğer uygun URL'ler işaret iframe etiketleri bir demet dışarı dökümü olur. Tarayıcı istekleri yapalım. Iframe'ler hakkında güzel bir şey, uzak komut çıktı "başarı" veya hata iletileri sahip olmanızdır.

Sen çünkü tek başına bunu yapmak için jQuery kullanamazsınız in-yeteneği Cross Site Scripting yapmak.

<?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>