Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 17

Discussione: php distribuito

  1. #1

    php distribuito

    Buongiorno, ho un problema che mi affligge da giorni:
    ho una applicazione in php costituita da diverse classi e distribuita su due computer. Ora, dovrei mettere in comunicazione i due computer ( e quindi le applicazioni php) per renderle un unico Web Service. Come avviene la comunicazione tra questi file php? Come può un file php usare un secondo file su un'altra macchina server? Se non mi sbaglio, con la "include" non faccio altro che "copiare" il codice in locale ed eseguirlo sempre in locale, distruggendo il concetto di "distribuzione" dei processi su macchine dedicate.

  2. #2
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,287
    Sembra che tu voglia il calcolo distribuito, ma non è così semplice.

    Quando richiami uno script php quello è 1 processo.
    Se il problema è di pesaqntezza A livello PHP la puoi al massimo dividere tra server script e server DB o usare un bilanciatore di carico in modo da eseguire lo script su un computer o sull'altro in base alle richieste.

  3. #3
    più che "calcolo distribuito" ho studiato la separazione tra la business logic e la data logic. Il secondo è un processo che si occupa di interagire con la base di dati. Sto realizzando un progetto che dev'essere in grado di supportare la separazione delle due logiche su macchine diverse, pertanto ho necessità di interagire col db su un altro computer. Chiamando il file php in ascolto sul back-end server (server su cui risiede il DB) ho effettivamente l'esecuzione di un processo su quella macchina. Ma come ritorno al mio processo sull'altro computer, da cui è partita la richiesta? Come fa a rimanere in attesa di una risposta? Come realizzare la comunicazione tra i due computer, in sostanza?

    Grazie per l'attenzione.

  4. #4
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,287
    Ah ok penso di aver capito..
    Non so se esista un middleware per istanziare oggetti remoti in PHP.
    La prima cosa che mi viene in mente è che potresti nella business fare delle chiamate con CURL sull'altro server e farti restituire i dati grezzi o l'oggetto serializzato con i dati che ti servono.

  5. #5
    quindi hai due applicazioni, l'applicazione A e l'applicazione B.... mentre la B non è accedibile dall'esterno, la A si ? cioè tu vuoi che una richiesta che arriva alla A, del tipo "getAllClients()" sia passata alla B per quanto riguarda l'elaborazione dei dati del db e poi dalla B torni alla A e la A usi il risultato per riportare una qualche rappresentazione dei dati da ridare alla richiesta?

    O usi sempre dei webservices "privati" tra A e B o passi via socket.

    Poi in realtà non ho capito molto com'è l'architettura, se la spieghi meglio magari uno ti sa dire meglio
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Originariamente inviato da Santino83_02
    quindi hai due applicazioni, l'applicazione A e l'applicazione B.... mentre la B non è accedibile dall'esterno, la A si ? cioè tu vuoi che una richiesta che arriva alla A, del tipo "getAllClients()" sia passata alla B per quanto riguarda l'elaborazione dei dati del db e poi dalla B torni alla A e la A usi il risultato per riportare una qualche rappresentazione dei dati da ridare alla richiesta?
    Esattamente!! Hai descritto ciò di cui ho bisogno (ne ho raccontato una versione semplificata perchè in realtà sono 3 i livelli della mia applicazione, non solo due, ho una presentation logic, una business logic e una data logic).
    In ogni caso va bene anche così: capendo il funzionamento a due livelli capisco chiaramente anche come funziona a 3 livelli.

    Accetto ogni tipo di consiglio e chiedo anche una cosa: la data logic, ad esempio, è considerata un Web Service lei sola? O è considerato Web Service l'insieme delle 3 logiche? Comunque per ora è poco influente, è una domanda più che altro teorica.

    Grazie anche ad Uranio, provo a documentarmi in merito

  7. #7

  8. #8
    Originariamente inviato da maje
    suggerimento: prova a leggere qualcosa sui servizi REST o SOAP, secondo me ti possono aiutare!

    http://php.net/manual/en/book.soap.php

    http://www.fliquidstudios.com/2009/0...server-in-php/
    Vuol dire che SOAP (che devo usare) dev'essere usato per comunicare tra i miei file php?

  9. #9
    dipende cosa devi fare: se hai bisogno di far comunicare due applicitivi scritti in PHP, sicuramente il sistema degli include o simili non è consigliabile, visto che saresti obbligato ad aprire dei controlli lato server che a mio avviso, per questioni di sicurezza, dovrebbero rimanere chiusi.

    Se vuoi far comunicare le due applicazioni, puoi implementare un servizio server SOAP su ogni applicazione (se può capitare che entrambe fungano da server) e un servizio client SOAP (sempre su entrambe se il caso lo richiede) per ricevere i responsi. In questo modo crei un'applicativo sicuramente più sicuro, più flessibile e più comodo da gestire.

    Ovviamente tutto dipende dai requisti e dal tipo di architettura che devi implementare!

    Però da quanto ho letto nei post precedenti, mi sembra che potrebbe essere la soluzione al tuo problema!

  10. #10
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,287
    Fare un webservice secondo me è inutile, i webservice si usano quando vuoi che differenti programmi accedano alla stessa risorsa.

    Quello che vuole fare qua è l'eguivalente di un client/server quidni deve solo eseguire uno script remoto ed aspettare il risultato, basta una chiamata.
    qualcosa tipo:
    Codice PHP:
    //lato logica
    function GetUtente()
    {
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL"example.com/utenti.php?function=GetUtenti&id=2");
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    $output curl_exec($ch);
            
    curl_close($ch);    
            return 
    Deserializza($output);
    }

    //lato serverDB (example.com)
    utenti.php

    switch($_Get['function']){
          case 
    "GetUtenti":
                 echo 
    Serializza(GetUtenti($_Get['id']))

    Devi gestire bene poi i timeout

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.