Puc arrencar una aplicació de servidor des d’una IGU (Interfície Gràfica d’Usuari) de navegador? És clar que sí! Què pensaves?

Benvolguda visitant, quan haguem de fer servir PHP per a posar en marxa una aplicació web d’administració de sistemes, moltes vegades acabarem fent servir el joc nadiu de funcions de sistema d’aquest llenguatge de servidor.

Windows

Per aplicació web d’administració de sistemes entenem aquí un programa que fa tasques tals com monitoritzar el rendiment d’un servidor, gestionar els processos, o esborrar i crear fitxers. En resum, aquestes aplicacions aprofiten les funcions i les ordres que proporciona el sistema operatiu subjacent -GNU/Linux, Mac OS X, Windows, Unix, etc.- per fer crides al sistema.

Recorda que una crida al sistema és una funció que ens permet accedir als serveis proporcionats pel sistema operatiu! Veiem per tant que les funcions de sistema de PHP proveeixen mitjans per a executar ordres a la màquina on està instal.lat el mateix PHP, via sistema operatiu subjacent. Així ens comuniquem amb el sistema operatiu tal i com ens hi comunicaríem amb l’intèrpret d’ordres (shell).

Dit això, si em permets recomanar-te que facis un cop d’ull al manual de PHP per a aclarir qualsevol dubte sobre la qüestió que tractem avui, a continuació adjunto una petita aplicació web client-servidor que executa un programa servidor mitjançant la IGU client corresponent. Te’n recordes del conte Alí Babà i els quaranta lladres de Les mil i una nits?, doncs bé, el nostre programa client es dirà obret-sesam.php i el programa servidor serà sesam.php.

Arxiu obret-sesam.php:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
        <script src="public/js/jquery.js"></script>
        <script type="text/javascript">         
            $(function() {             
                jQuery('#abrete-programa').click(function() {                     
                    $('#ajax-loader').show(); 
                    $.ajax({
                        url: "http://el-meu-server.com/sesam.php",
                        complete: function() {                             
                            $('#ajax-loader').hide(); 
                        }
                    }); 
                });             
            });     
        </script>
    </head>
    <body>
    <img id="ajax-loader" style="display:none" src="public/img/ajax-loader.gif" alt="AJAX loading" />
    <a id="abrete-programa" href="#">Obre't Sèsam!</a>
    </body>
</html>

Arxiu sesam.php:

$Shell = new COM("WScript.Shell");
$oExec = $Shell->Run("C:\tresor.exe");

Quan l’usuari cliqui sobre l’enllaç Obre’t Sèsam! aleshores arrencarà c:/tresor.exe, l’aplicació Windows que es troba en el mateix servidor on està l’script sesam.php.

Es deixa com a exercici al lector acabar aquesta petita aplicació tot fent que el procés servidor termini quan l’usuari que està a l’altra banda cliqui sobre un enllaç que digui Tanca’t Sèsam!