Gitbaritalian
developer
podcast
21

Programmazione asincrona in php, react php e drift php

Serie 1
Episodio 21
Durata 41 minuti

Nello sviluppo delle applicazioni nasce l'esigenza sempre più forte di una resposività. Questa esigenza è soddisfatta out of the box da linguaggi come js e go che offrono in modo nativo il supporto alla programmazione asincrona... e php?

Per php esistono tool come react php che mettono a disposizione event-loop, promises e streams, elementi indispensabili per la programmazione concorrente.

Se poi si deve sviluppare una app da zero, drift php può dare un boost significativo, da framework completo per lo sviluppo di app asincrone ci rende meno doloroso lo sviluppo di una nuova web-app.

Con queste nuove tecnologie si aprono le prospettive per php linguaggio spesso bistrattato ma comunque ancora molto amato, a patto che si approfondisca l'argomento o quantomeno si sappia distinguere la programmazione parallela da quella concorrente.

Links

Contatti

@brainrepo su twitter o via mail a info@gitbar.it

Crediti

Le sigle sono state prodotte da MondoComputazionale Le musiche da Blan Kytt - RSPN e Broke For Free - Something Elated

Trascrizione

Trascrizione automatica realizzata con servizi Amazon AWS Transcribe

benvenuti su bar di podcast dedicato al mondo dei full stack developer di mezzo artigiani, mezzo artisti che ogni giorno infilavano le mani nel fango per creare nel modo più efficiente possibile quei prodotti digitali che quotidianamente usiamo.
Bene, benvenuti ventunesimo episodio di With Io sono Ben repo e oggi vi accompagnero' nel mondo del Chp asincrono.
Ebbene sì, dopo ventuno episodi ritorniamo, diciamo al linguaggio che è stato il linguaggio del nostro primo episodio e lo faccio con tanto piacere, visto che PHP è stato per lungo tempo il mio primo linguaggio di programmazione, quello che ho utilizzato di più nella mia vita lavorativa e devo dire che in questi ultimi anni sta accelerando in modo molto sostenuto il suo sviluppo.
Si sta affacciando a mondi come quello della programmazione, che prima erano anche solo impensabili quando si parlava di ma prima di entrare nel dettaglio di questo episodio bene, il mio compito è quello di ricordarvi i nostri contatti.
Potete trovare tutte le informazioni del podcast, comprese le puntate, le note degli episodi nel sito www punto x Potete inoltre scrivermi a heat brian Report su Twitter o hai bar punto it' Mi raccomando, scrivetemi se c' è qualche argomento che volete approfondire o volete che ve ne parli o se volete darmi qualche suggerimento per come migliorare o implementare il podcast? Detto questo, possiamo iniziare il mondo delle web.
Non si è sviluppato una velocità decisamente sostenuta, però con tanta velocità, se anche sviluppato una certa impazienza dell'utente per ricevere le risposte in tempo reale.
Buona parte delle risposte però, non possono essere restituite con questa velocità.
Questo per esempio, perché in realtà in background, da una nostra richiesta succedono tutta una serie di eventi che hanno bisogno del tempo.
Il più delle volte sono eventi che riguardano chiamate i piatti oppure apertura e scrittura all'interno di fa' la o letture dal database, comunque sono delle operazioni input, output e operazioni che in qualche modo fermano il calcolo del processore e bloccando in qualche modo la nostra applicazione.
Uno di questi esempi può essere un email attraverso un pannello web.
Immaginiamo di avere la nostra applicazione web che invia una mela a un certo indirizzo durante il quindi il momento in cui la nostra applicazione comunica con il server di posta, magari attraverso immaginiamo le piace il per la nostra applicazione sarà bloccata finche' l'invio della mail quindi le hai non ci danno una risposta e quindi si può continuare le esecuzioni.
Questo perché in realtà il flusso tradizionale delle applicazioni bene e gira step cosa vuol dire? Che prima viene eseguito un'operazione? Al termine di questa viene eseguita quella successiva.
Questo tipo di tradizionale.
Nel caso in cui ci sono diverse operazioni di quindi lettura e scrittura, beh, si rallenta in modo significativo.
Questo perché in realtà una cpu processo un'istruzione per volta un blocchetto per volta e quindi passa quello successivo una volta che è terminato quello precedente.
Cosa succede? Che se nel blocco N ci sono tutta una serie di letture e scritture o comunque tutta una serie di operazioni, il processore rimarra' fermo in attesa della conclusione appunto di queste operazioni questo tempo, in realtà in cui il processore non fa niente e in qualche modo tempo perso per cui si è pensato e di trovare delle soluzioni per l'esecuzione di codice asincrono, quindi per fare in modo che a ogni richiesta di operazioni non si blocchi il processore e quindi si possa iniziare il calcolo di un tasca successivo di un compito successivo.
Per farlo però è necessario approfondire il concetto di sincrono e asincrono.
Una delle soluzioni appunto per rendere il nostro codice più performante è quella di eseguire tra virgolette più tasca contemporaneamente o quasi contemporaneamente.
Per arrivare a questo concetto è necessario fare una distinzione traccia che sincrono e cio' che asincrono.
Quando si parla di sincrono o asincrono si parla solitamente di modelli di programmazione e'.
Una cosa molto importante tra l'altro è uno degli argomenti che ritorna più spesso nelle interview di lavoro e spesso lo si confonde con una programmazione concorrente o parallela.
Qua stiamo semplicemente ragionando in termini di sincronicità, dell' esecuzione.
Quindi in questo momento prendiamo in considerazione solo due concetti la sincronicità o la sincronicità.
Quando si parla di synchro e di programmazione di modello di programmazione sincrona, si parla di un modello di programmazione che top-down quindi esegue in le istruzioni blocco per blocco step.
Quando è terminato il primo step si passa allo step successivo.
Questo modello di programmazione e anche detto modello di programmazione prevedibile.
Cosa vuol dire che in qualunque momento del nostro codice noi sappiamo in che punto ci troviamo l'alternativa a questo modello di programmazione e la programmazione asincrona dove il nostro codice viene diviso in tasca che possono essere eseguiti in modo concorrente.
Cosa vuol dire? Che possono essere eseguiti e noi abbiamo la percezione che siano eseguiti contemporaneamente questo tipo di programmazione lo stato delle esecuzione non è prevedibile, nel senso che le faccio un esempio molto semplice una funzione che stampa ha una funzione che stampa b se le e queste funzioni vengono eseguite prima prima la prima che stampa poi è quella che stampa b in modo asincrono.
Io avrò come esito a B.
Se io dovessi eseguire in modo asincrono questa e queste due istruzioni potrei avere via o Abby perche'.
Io non conosco loro in cui queste due funzioni vengono eseguite.
Se volessi farvi un esempio ancora più semplice tra la programmazione sincrona è quella asincrona può essere assimilata alla lettura di un libro.
La programmazione sincrona è una lettura, un po' tipo come quella che facciamo quando leggiamo dei romanzi.
Quindi leggiamo pagina per pagina paragrafo per paragrafo e quando terminiamo paragrafo, passiamo al successivo.
Quindi in qualche modo ho sempre la bussola e sono sempre in quale punto del libro mi trovo è quanto ne un letto di quel libro diverso.
Ecco la programmazione asincrona l'esempio tipico della programmazione io posso iniziare a leggere un paragrafo che parla, che ne so di programmazione interrompere, approfondire, che ne so, leggendo di un paragrafo che tratta l'argomento dell'istruzione per poi ritornare al paragrafo di programmazione dopo aver letto appunto quello che trattava questo saltare da un punto all'altro interrompere e riprendere.
Beh, questo in qualche modo abbastanza similare.
Ecco quello che la programmazione asincrona oppure metafora può essere lì per testo, quindi è molto importante distinguere questi due modelli di programmazione, quindi sono due modi completamente diversi con i quali scriviamo il nostro codice.
Dal suo canto invece, e' un linguaggio di programmazione single per il flusso di istruzioni di un processo.
Che vuol dire che un'applicazione uno script php non può creare nuovi trend durante la sua esecuzione.
Questo naturalmente autore box è possibile farlo con funzionalità come pittore jazz, ma sì, diciamo andate incontro a parecchi mal di testa in fase di configurazione e di lavoro.
Quindi cosa vuol dire? Che in realtà, quando esegui un certo tasche, un certo compito si blocca finche'? Non appunto non sono concluse da una parte e l'elaborazione del processore da a tutte le richieste e disposte.
Attenzione però che quando parliamo invece di web server, quindi a pace rende sono loro quelli che in realtà aprono creano più trend per di spacciare le tante richieste che possono arrivare al web server.
Quindi tutta quella complessità di aprire tanti tread.
Quanti a quante richieste, appunto ci sono naturalmente con dei limiti, per esempio con fasce ai limiti della memoria? No.
Quindi quella complessità è passata dal linguaggio al che fa girare appunto gli script.
Questo appunto per la sua natura di php.
Quindi dice detto questo è appurato che php un linguaggio che ragione intermedi tra il singolo.
Perché utilizzare per capire come evolvere php per poter eseguire delle applicazioni non bloccanti, quindi che non attendono che tutte le operazioni siano terminate per passare all'istruzione successiva? Beh, perché non utilizzare degli altri linguaggi come java script che sono già sincroni out off the box? Beh, questo perché in realtà prima guardavo la classifica di to be comma che uno dei siti più affidabili che fa in qualche modo un ranking dei linguaggi di programmazione ricopre dopo tantissimi anni ancora l' ottavo posto in classifica.
Quindi una posizione molto alta, eh? Tantissimi siti di hosting supportano questo come linguaggio principale e questo ha creato insomma un'adozione di massa.
Quindi php diciamo un linguaggio molto adottato dai programmatori, specie dai programmatori entry-level, vista appunto la sua curva d'apprendimento.
E quindi perché non utilizzare linguaggi come nodo che in realtà lo supportano nativamente? Beh, questo perché per esempio, se si parla in ambiente enterprise azienda un nuovo linguaggio all'interno del team puo' anche voler dire, anzi vuole dire solitamente la abbracciare un nuovo ecosistema se il team grande e soprattutto non è fragilissimo, beh, questo vuol dire penso a un certo sacrificio anche in termini economici.
È quindi più facile pensare a un tunnel per rendere il php asincrono che magari cambiare tutto lo stato.
Questo ragionamento viene supportato anche dal fatto che è un linguaggio che man mano che il tempo sta passando si sta dimostrando sempre più moderno e non si limita più solo al concetto.
Dire questa è responso che era un pilastro pilar fondamentale e appunto nel momento in cui il php è stato sviluppato per capi nasce per scrivere script web, è la sua colonna portante.
Era appunto che uno script web partisse da una richiesta e dovesse restituire una risposta e la veniva in qualche modo il ciclo di vita della dell'applicazione dello script.
Oggi, per esempio, troviamo dell'applicazione la linea di comando che hanno delle durate molto lunga.
Infatti sono delle application e troviamo funzionalità come gli strinse che hanno senza dubbio dato quei superpoteri al per poter sviluppare delle applicazioni che vanno un pochino oltre le classiche a per le applicazioni a richiesta.
A risposta diciamo che questi sono degli strumenti base per iniziare a pensare di poter applicare il modello della programmazione asincrona concorrente naturalmente all'interno del mondo php quando si parla di programmazione asincrona si può parlare di programmazione concorrente o parallela che cos'è la programmazione concorrente.
Beh, senza dubbio e' un tipo di programmazione dove noi non dobbiamo preoccuparci dell' ordine in cui vengono eseguite le operazioni.
Perché? Perché in realtà verranno eseguite in modo da ottimizzare i tempi è quindi portarci al risultato in un tempo ridotto rispetto appunto alla programmazione sincrona.
E la il concetto prevede che l'esecuzione di alcuni tasche possa essere bloccata per dare la precedenza alla esecuzione di compiti successivi per poi ritornare al task che avevamo sospeso e riavviarlo.
Quindi mettiamo che noi stiamo che ne so, avviando la scrittura di un certo risultato di un'operazione matematica all'interno di un file non facciamo l'operazione matematica, lanciamo la scrittura.
In realtà la scrittura è un'operazione di, quindi prevede l'utilizzo di risorse diverse dal processore.
In questo caso questo processo durante l'esecuzione appunto delle operazioni di viene sospeso.
Vengono eseguite tutta una serie di istruzioni nel frattempo quando poi l'operazione questi le istruzioni seguenti all'operazione di lettura e scrittura all'interno del file verranno eseguite quindi in qualche modo quel tempo nel quale il nostro script i nostri tasca successivi rimanevano in attesa perché le operazioni di come vi ho detto prima sono dispendiose in termini di tempo.
Ben so questo tempo viene riciclato o riutilizzato per poter eseguire altre operazioni a livello di processore, quindi ottimizzare appunto il tempo per di questi i compiti.
In questo caso il tipo di programmazione viene chiamato concorrente l'esempio che faccio spesso è quello di partecipare a un contesto e dove si deve appunto mangiare un numero di hamburger significativo e contemporaneamente e cantare e la alla vostra sinistra e ancora una volta l'orgoglio dei camionisti d'america l'imbattibile re parleremo la la nostra destra governo che io torni ai vostri polsi No nn manda giotto non ho visto alcun concerto giusto il premio di questo contesto sia per chi riesce a cantare completamente una canzone dall'inizio alla fine ecco contestualmente terminare anche venti hamburger che voi andiate la canzone per intero e poi iniziate a mangiare gli hamburger oppure cambiate metà canzone.
Prima mangiate gli hamburger e a metà canzone dopo oppure una parola, un morso.
Bene, entrambi questi metodi sono da intendersi concorrenti, quindi in realtà non importa come vengono eseguiti, in tasca ci sono.
La cosa importante, appunto, che non ci siano delle attese è che insomma il latte, ma gli hamburger e la canzone diciamo finiscano nel minor tempo possibile.
Per programmazione parallela, invece, si intende quando due tasche sono eseguiti simultaneamente.
Solitamente questo tipo di programmazione prevede l'utilizzo appunto, di processori multi-core, quindi ogni processo esegue contestualmente una serie di istruzioni nello stesso tempo in cui un altro esegue delle altre ed è un po', come per tornare all'esempio di qualche secondo fa della gara appunto di mangiare hamburger e cantare eccome che io mangio gli hamburger e uno di voi canta contestualmente una canzone, quindi senza dubbio terminerà.
Prima però c' è da dire che la programmazione parallela presuppone appunto la presenza di processori.
Multi-core è l'accesso concorrente alle risorse per esempio in caso di lettura e scrittura, e questo potrebbe essere un problema.
Ma allora come possiamo portare il mondo della programmazione concorrente su un sistema single, come dicevo prima, che è quello appunto di php? Beh, il cuore di ogni asincrona e senza dubbio le venti lupi e un paterna che presuppone che le azioni task siano inserite all'interno di una coda che per ogni azione.
Quindi per ogni evento ci siano tutta una serie di under di azioni collegate e quindi quando l'evento e scatta, quindi viene quindi il le azioni collegate all'evento reagisce e quindi eseguono una serie di tasca eleventh lupo rimane sempre in circolo, essendo un for senza condizioni di uscita, per cui con non fa altro che prendere degli eventi e di spacciare, prendere degli eventi, di spacciarla.
Se io un'operazione tutto durante il dispacciamento di un evento, quindi l'esecuzione di una serie di compiti verrà in qualche modo avviato il il il compito sapendo che al termine di questo deve essere in qualche modo creato un altro evento che poi deve essere di spacciato e quindi il ciclo continua a girare, anche se un evento è in attesa.
Questo diciamo è una cosa che di di sua natura javascript ed è presente ed è uno degli elementi che ha permesso, per esempio al java Script di supportare di voterà appunto realizzare con scrive quelle interfacce bioattive dove per esempio al calcare di un bottone esegue una serie di operazioni, ma non bloccano le esecuzioni degli altri script della pagina ben più di per sé.
Questo concetto non esiste ed è stato introdotto con la realizzazione di una libreria chiamata reati php c'è da fare una un piccolo avvertimento quando si parla di questo non ha nulla a che vedere con il mondo di reato, appunto legato al java script.
Ma si parla di una serie di tool scritte in puro che ci permettono di realizzare le applicazioni asincroni appunto partendo dal php.
Perché questa questo un insieme di strumenti, questa libreria, perché in realtà all'interno del linguaggio mancano o concetti come lo stream e le promise che invece sono elementi fondamentali alla base di in qualunque sistema di tipo concorrente è una cosa importante, in realtà è che la capisce una serie di componenti, mi viene da pensare ai per chi sviluppa sa benissimo che è scritto in modo molto modulare, dove i moduli sono abbastanza autonomi tra di loro.
E poi il socio è un codice colla che mette insieme tutti questi moduli per creare un framework basti pensare che molti dei moduli e ddd i componenti di sinfonie vengono utilizzati anche da altri framework come la bella.
Questo perché appunto, sono una serie di tool, un approccio che se è stato preso anche da ubriaca, che ha sviluppato una serie di componenti che ci potessero permettere di sviluppare applicazioni in qualche modo concorrenti, anche utilizzando un linguaggio che appunto non poteva per sua natura essere concorrente.
C'è da dire che in realtà non ci sono grosse pretese dai componenti dire act.
Infatti noi possiamo sviluppare una completamente concorrente oppure prendere quei componenti, inserirli all'interno di una nostra funziona nostra libreria per rendere magari concorrente.
Un esempio semplice può essere che ne so uno io un'applicazione web application e' un controller che fa una serie di operazioni beh, all'interno di questa operazione ci sono tre, quattro cinque chiamate unità high.
Se in qualche modo volessi e fare queste chiamate i piatti in modo concorrente, beh, potrei farlo utilizzando appunto l'evento in loop le promesse messe a disposizione da re act php oltre alle sviluppo.
Quindi altri due strumenti fondamentali messi a disposizione e dare ai capi sono le promesse e gli strinse cosa sono le promisi per partendo dal presupposto che e' il codice che noi andiamo a eseguire deve essere asincrono, quindi in qualche modo debba deve reagire in modo asincrono a certe istruzioni.
Noi dobbiamo in qualche modo istruire il nostro compito ha con come comportarsi una volta che quel istruzione e portata a termine.
Se avete programmato con JavaScript.
E la cosa più semplice che viene.
E appunto da pensare se il callback col vecchio in realtà presenti in PHP, dal momento in cui all'interno appunto di un parametro di una funzione, io possa passare un'altra funzione.
Quindi è possibile comunque fare utilizzare le callback.
Però per chi ha esperienza scrive bene, sarà facile ricordare il callback che si viene a creare quando tante callback una dentro beh, le promisi se è un modo per risolvere questo problema.
In realtà cosa sono le promesse? Le promesse sono delle promesse, sono delle promesse per qualcosa che deve essere eseguito in un momento successivo, quindi sono in qualche modo un segnaposto per un risultato che arriverà dopo e le promisi sanno tre stati fondamentali bending Ted o fulfiled.
Cosa intendi? Cosa? Lo stato dipendi bello stato deepening quello stato in cui la promessa non è ancora stata risolta.
Quindi in qualche modo, noi non abbiamo un risultato che noi stiamo ponendo.
Era Jack Ted è quando c' è stato un errore durante l'esecuzione appunto di quel di quel codice che dovremmo andare a trattare in qualche modo ho fulfiled è completata.
Quindi quando la promo ISIS il il segnaposto e per il risultato un calcolo successivo.
Quindi la promessa che le stiamo facendo è stata completamente risolta e quindi eseguo le istruzioni successive tra l'altro una cosa molto importante che le promesse si possono accordare bene.
Le promisi sono uno strumento messo a disposizione di reati PHP per semplificare lo sviluppo di applicazioni asincroni.
Beh, ci sono una serie di e librerie che utilizzano il concetto di pero'.
Non abbiamo abbastanza tempo per approfondirlo, ma nelle note dell'episodio metto i link per andare a leggere qualcosa riguardo appunto le bruttine, un altro strumento messo a disposizione dalle act che solo gli stream sappiamo che uno dei problemi che rende le applicazioni lenti è appunto il tempo dovuto alle operazioni di che e' decisamente maggiore del tempo di esecuzione nel processore delle operazioni.
Tempi con i quali, per esempio andiamo a impattare quando andiamo a leggere e scrivere a dei file si file sono molto grande e abbiamo anche dei problemi in termini di memoria.
Per ovviare a questo problema, php mette a disposizione dei tool riguardanti appunto gli strinse.
Questo perché in realtà le letture, le scritture nei file o nel database tipiche delle nostre applicazioni sono delle operazioni di tipo bloccante, quindi bloccano, per cui se vogliamo realizzare una di tipo asincrono dovremo utilizzare delle librerie che vanno a leggere e scrivere file, a salvare nel database o a fare delle richieste ad altri endpoint http in modo asincrono.
Per farlo appunto, ci sono gli strinse messi a disposizione dalle act php che non fanno altro che per esempio nel caso dei file di dividere in piccoli quindi in piccoli il file che si intende leggere e scrivere e quindi permettere un accesso diciamo parziale al file.
Tra l'altro esistono anche tutta una serie di strumenti e che ci permettono appunto di utilizzare gli stream.
È quando parliamo di storici, quindi parliamo di lettura e scrittura nel disco parliamo di network, quindi chiamate ad http, magari dove le risposte sono molto grandi.
Abbiamo bisogno appunto di questo strumento letture, scritture fa' che esce log code e quindi diciamo che gli stream sono degli strumenti messi a disposizione da hp per poter interagire in modo non bloccante con quegli elementi che e comunque prendono tempo.
Nel momento in cui noi andiamo a interagire occupano un grande parte del nostro tempo appunto di disposta quindi abbiamo capito che la piu' php è un toon tools è un insieme di librerie che ci permettono di sviluppare applicazioni asincrona.
Però queste librerie sono indipendenti, sono svincolate l'una dall'altra potremmo utilizzarne magari alcune parti e non utilizzarne delle altre e quando si decide di sviluppare un'operazione un'applicazione reattiva quindi asincrona partendo da zero potrebbe essere utile affidarsi a un framework chiamato drift php.
Quindi se i tool sono una serie di strumenti, quindi la e' una serie di turbe i non sono altro che un modo per orchestrare organizzare questa serie di di di di strumenti di funzionalità per creare appunto un ecosistema che possa in qualche modo essere eseguito.
Dall'inizio fino alla fine del e andiamo a fare utilizzando drift fiacca che prende utilizza i paradigmi che ha il famoso ma le applica ha un concetto di programmazione concorrente utilizzando i componenti appunto dire act php.
Per farlo deve sostituire alcuni elementi fondamentali di symphony in primis la nel noi sappiamo che è basato sul concetto appunto di carne, il che non fa altro che prendere una richiesta, farla maneggiare da questo nel restituire una risposta noi abbiamo detto che questo tipo di approccio lo vogliamo è comunque smontare per permettere la esecuzione, appunto il di tipo asincrono per farlo, anche perché devo dire che l'esecuzione del un'operazione bloccante.
Quindi per farlo il chp ha dovuto in qualche modo riscrivere il suo kernel in modo che potesse funzionare anche con le quindi con le operazioni di tipo non bloccante asincrono.
Un altro strumento che dobbiamo andare a sostituire è senza dubbio l'eliminazione de web server come a pace e ginex questo perche' eliminazione.
Diciamo che non ci servono più in questa fase perché in realtà la nostra applicazione di per sé non ha bisogno di un web server esterno perché si connette in modo nativo ai socket per poter rispondere ai clienti.
Quindi diciamo che tutto quel livello potrebbe non essere più necessario e un'altra.
Cosa interessante che invece Adrift pipi' e che per anni piaciuta particolarmente, mi ha catturato la tensione e che in realtà separa in modo stringente in modo significativo la le operazioni riguardanti il dominio da tutto ciò che riguarda la plataforma e l'ecosistema.
Quindi diciamo che drift php è quel framework che ci permette di iscrivere in applicazioni partendo da zero, quindi quando vogliamo realizzare un'applicazione partendo da zero e ci da tutta una serie di strumenti e quindi anche tutta la parte di orchestrazione per realizzare la nostra applicazione useremo invece la quando abbiamo qualcosa di veramente custom da realizzare, oppure quando vogliamo implementare inserire delle azioni delle operazioni tipo asincrono all'interno di applicazioni già esistenti.
Di qui mi viene da pensare che da grandi poteri derivano altrettanto grandi responsabilità ricorda sempre da un grande potere derivano grandi responsabilita'.
Infatti la programmazione asincrona non è un silver che possiamo usare in tutte le condizioni, senza nessun lato negativo.
Esistono comunque tutta una serie di said problema legata all'adozione di questa tecnologia e'.
Il primo è legato al fatto che le vende lupo deve sempre stare in circolo, deve sempre girare e non si può permettere appunto di bloccarsi.
Questo presuppone che in realtà il programmatore debba fare molta attenzione, molta più attenzione sul codice che va a scrivere.
Non dico che non dovesse prestare attenzione prima quando l'applicazione eseguita su un processo di tipo richiesta risposta, ma comunque deve prestare attenzione, per esempio l'utilizzo della memoria.
Questo perché anche se c' è un buon garbage collector php ha un buon garbage collector.
Bene, nei processi lunghi la memoria si potrebbe saturare.
Stesso problema che sia anche quando si lavora con is, per cui tutto ciò che riguarda la gestione della memoria in qualche modo non dico che debba essere preso in carico esclusivamente dal programmatore, ma un minimo di sensibilita' è necessaria da parte del programmatore, quindi deve prestare particolare attenzione, così come si deve prestare attenzione alla gestione delle eccezioni.
Questo perché? Perché se prima il nostro ciclo di esecuzione e l'ha legata al processo richiesta risposta oggi abbiamo un lupo che gira per tutte le richieste e risposte.
Per cui se per caso ci scappa un'eccezione un errore che noi non catturiamo.
I non gestiamo bene tutta l'applicazione si blocchera' rispondendo picche a tutte le richieste che sono state fatte in quel momento, quindi non solo rendiamo impossibile l'utilizzo all'utente per il quale si è verificata quell'errore, ma blocchiamo praticamente l'applicazione per tutti i nostri utenti.
Inoltre, il concetto de lupo fa sì che il processo di esecuzione PHP sia un un processo con vita molto lunga.
Quando la vita del processo si a lunga in modo così significativo, beh, potrebbero capitare delle chiusure di connessioni inaspettate, quindi necessario magari monitorare le connessioni affinché queste rimangano attive, gestire appunto lei e chiusure di connessione, per esempio col database inaspettata e' sempre quando si parla di database, devo dire che in realtà uno dei limiti ad oggi della programmazione ex concorrente o comunque asincrona compia capire il fatto che comunque molte funzionalità di sistema esempio di Dio o la lettura e la scrittura dei file, così come tante librerie, sono ancora scritte usando una concezione di tipo bloccante per cui in realtà spesso abbiamo appunto il problema di non avere delle librerie che girino in modo asincrono è importante.
Dobbiamo sempre tenere presente che gli handler quindi diciamo le azioni di eseguire alla fine appunto di una chiamata synchro devono essere non devono essere bloccanti.
Questo perché in realtà, qualora fossero bloccanti, bloccherebbero di tutti gli altri task e quindi bloccherebbero non solo l'utente x che ha lanciato quella operazione, ma bloccherebbero anche tutti gli altri utenti che hanno dei tasche da eseguire e questo è senza dubbio un problema.
Quindi certo è che la programmazione asincrona porta php a un altro livello, gli permette un miglioramento in termini di prestazioni significativo.
Ma con questo incremento di prestazioni ne viene anche tutto un pacchetto, una serie di responsabilità che prima si assumeva o in qualche modo evitava di far assumere al programmatore e che adesso invece sono tutte sullo zainetto sul carico dello sviluppatore.
Per cui diciamo che ci sono anche dei contesti dove la la la la la la programmazione asincrona può essere utile e dei contesti dove diciamo è un po' sovradimensionato utilizzare questo approccio.
Spero che questo episodio vi sia piaciuto.
In realtà php è sempre stato il mio primo amore con tutti i suoi lati negativi e ce ne sono tanti, ma anche i suoi lati positivi, diciamo, non fanno altro che col tempo aumentare sempre di più e' uno di quei linguaggi che in realtà si sta evolvendo in modo molto rapido e sta in qualche modo mutando la sua natura in modo altrettanto veloce.
Senza dubbio l'introduzione della programmazione asincrona nel mondo di PHP riesce ad aprirgli le porte e di tanti in tanti ambienti dove il PHP probabilmente non sarebbe stato utilizzato per compiere questo tipo di e operazioni c'è da dire che in realtà BR act php non è l'unica libreria per la realizzazione e l'utilizzo di procedure di tipo asincrono.
Esistono altri libri e come sul tuo amp php che permettono in modi diversi devo dire, ma di raggiungere lo stesso obiettivo tra l'altro se ti do anche quelli magari a queste librerie nelle note dell'episodio.
Detto questo prima di salutarci bene, mi devo ricordare i nostri contatti.
Potete trovare tutte le informazioni sul podcast e su tutti gli episodi nel sito www bar punto hoyt oppure potete scrivermi a in su Twitter a heat Brian repo se l'episodio vi è piaciuto bene, aprite il vostro cliente di podcast preferito e iscrivetevi in modo da ricevere settimanalmente tutte le notifiche di pubblicazione dei nuovi episodi, in modo da non rimanere indietro.
Se vi è piaciuto davvero tanto bene, aprite l'applicazione podcast Tiepolo o direttamente i toons se viva naturalmente lasciate un commento con una recensione.
Questo in qualche modo ci aiuta a salire nelle classifiche di ai Toons a raggiungere più orecchie possibile.
Detto questo, io vi saluto e vi do appuntamento alla prossima settimana con un altro argomento interessante del mondo dei fool.
Sta davvero tutto ciò bar, il circolo dei frustrati da bere una volta a settimana ci troviamo davanti a due birre e comprerebbe Parliamo di linguaggi e tecniche di sviluppo web, di metodologie e degli strumenti immancabili nella cassetta degli attrezzi dei Foster.
Ho bisogno di una mano. Aiutami a rendere più conosciuto il nostro podcast. Parlane con gli amici o con i colleghi e iscriviti usando Apple Podast o Google Podcast. Questa tua azione ci aiuterà a salire nella classifica dei podcast di tecnologia ed essere utili anche a qualcun’altro. Se non ti va, amici come prima😄