• User Attivo

    Ciao pizzet,
    generalmente quello che si fa è scatenare l'evento aggiornamento quando un utente qualunque entra in una pagina web. Per evitare di consumare risorse lanciando moltissime volte l'operazione aggiornamento puoi:

    1. Fare un controllo sul tempo. Cioè ad ogni aggiornamento aggiorni sul db anche un campo data-ora e solo se la data è superiore a xx ore rispetto a quella sul db scateni un nuovo evento aggiornamento.

    2. Fai un calcolo probabilistico. Se la tua pagina è visitata da 50 volte a giorno, lanci un numero random da 0 a 100 e se il risultato è minore di 2 (capiterà mediamente una volta al giorno), scateni l'evento aggiornamento.

    3. Una combinazione delle due precedenti. Sostanzialmente è come 1) ma per evitare di fare 50 query al giorno, lanci un numero random da 0 a 100 e se il risultato è minore di 10 (per esempio!) fai la query sul tempo. In questo modo anziché fare 50 query al giorno ne farai mediamente 5.

    4. Varie più o meno fantasiose, sempre più o menoi statistiche/temporali sulle azioni degli utenti sul sito.

    Aspettiamo qualche altro suggerimento!

    :ciauz:


  • User

    grande CECCUS non è la prima volta che mi rispondi esaustivamente.
    Ma il mio problema è questo:
    Io ho creato del codice in php che mi permette di interrogare un db mysql,fare dei controlli e permettere di fare una transazione da un cliente ad un venditore pagando con paypal.
    Sto rendendo questo passaggio sicuro con il protocollo ssl per avere quindi la possibilità di gestire più utenti su canali esclusivi.
    Ora appunto mi serve creare qualcosa che scrivi sul db in modo da essere multithread e che sia asincrona alla transazione, quindi in poche parole

    oggetto multithread --> script per la transazione --> paypal
    che scrive sul db che controlla i dati

    non so se è molto chiaro ma se mi puoi dare uno mano sulla prima parte di sarei molto grato

    Grande CECCUS:vaiii:


  • User

    mi scordavo che a me serve che il mio script prenda i dati dal db, faccia la transazione, se la transazione è andata a buon fine cancella i dati e continui a processare nel solito modo con altri dati dal db.
    Cosa mi consigli di fare una variabile di tempo nel db come mi hai consigliato o creare qualcosa di nuovo??


  • User

    eccomi con un nuovo quesito.
    esiste un qualcosa che permetta di fare il connection pooling in php?
    ho letto in giro sul web di sqlrelay ma non ho capito molto come funziona e soprattutto se è limitato solo a linux!!!
    chi mi sa aiutare


  • User

    help qualcuno sa dirmi se esiste il connection pooling ad un db mysql utilizzando il php???'


  • User Attivo

    Io purtroppo non ne conosco... sei sicuro che ti occorra un vero e proprio connection pooling? Magari puoi risolvere altrimenti... db e applicazioni dove risiedono? Macchine diverse? Distanti? Dedicate?

    Hai preso in considerazione mysql_pconnect()?

    Sembrerà banale, ma spesso è più facile modificare l'approccio al problema che risolverlo...:o

    :ciauz:


  • User

    stavo appunto leggendo in giro di mysql_pconnect() ma non ho le idee molto chiare anche perchè ho appreso che posso simulare con fsockopen es 100 request https e che il mio mysql ha la variabile max_connection a 100 e apache è settato per avere illimitate connessioni, ora il punto è che con la funzione mysql_pconnect() io posso dedicare le 100 connessioni a mysql senza che queste vengano chiuse alla conclusione dello script però così facendo alla 101 connessione che succede? viene rifiutata la transazione? devo memorizzarla su una tabella del db con una variabile che ne so legata alla data di richiesta che venga ripresa appena una connessione viene conclusa.
    CECCUS illuminami perchè non ci ho capito un tubo.


  • User Attivo

    Quasi tutti i server commerciali bloccano la possibilita di utilizzare connessioni persistenti (mysql_pconnect()). Pertanto come preambolo: puoi utilizzare mysql_pconnect()?

    Secondo, mysql_pconnect() è molto delicata e generalmente non risolve nulla. Ogni processo che serve una richiesta del client normalmente apre una connessione verso mysql e poi la richiude. Con l'uso delle connessioni persistenti, uno stesso processo riutilizza la stessa connessione che aveva aperto in precedenza,*** senza aprirne una nuova***: non è detto però che sia quello stesso processo a servire una seconda richiesta da parte dello stesso client.

    Inoltre se il numero di connessioni a mysql è limitato (per esempio a 100) ed arriva il processo 101, questo non potrà più aprire connessioni:*** cioè lo script non funziona***.

    Detto ciò, le connessioni persistenti si utilizzano solo per alleggerire il carico del server (aprire e chiudere connessioni può essere dispendioso) quando il server lavora molto.

    Detto ciò diventa veramente cruciale, per poterti aiutare, capire perché ti occorre una gestione particolare del collegamento a mysql: spesso esistono soluzioni più semplici di quelle che pensiamo di aver individuato.
    :ciauz:


  • User

    ok sei stato chiaro.
    sto facendo un elaborato dove mi arrivano diverse richieste sul server (anche contemporaneamente) dove mi vengono passati dei parametri che mi indicano i protagonisti della transazione (mittente,destinatario e ammontare €) il mio codice prende tali parametri dal db stabilisce un canale esclusivo con HTTPS e li passa a paypal indirizzando anche il clente (mittente) sulla pagina di paypal dove immette il suo account e la sua password ed accetta la transazione di soldi, dopodichè paypal tramite ipn scrive i dati della transazione sul db e chiude la connessione.
    Non so se sono stato chiaro.
    Io ho già implementato ipn paypal e la lettura sul db, ora mi manca da simulare le richieste di connessione (preferibilmente gestite in modo asincrono dal codice di transazione) e la gestione con il quale tale codice apre il canale tramite HTTPS e fa la transazione.
    Mi sapresti aiutare??????


  • User Attivo

    Insomma... 😄

    mi vengono passati dei parametri che mi indicano i protagonisti della transazione (mittente,destinatario e ammontare ?) il mio codice prende tali parametri dal db
    I paramentri te li danno i protagonisti o li prendi da db?

    dopodichè paypal tramite ipn scrive i dati della transazione sul db e chiude la connessione.

    intendi che tramite ipn, paypal invoca una funzione sul tuo server che scrive su db, giusto?

    ...ora mi manca da simulare le richieste di connessione (preferibilmente gestite in modo asincrono dal codice di transazione) e la gestione con il quale tale codice apre il canale tramite HTTPS e fa la transazione.
    Scusa... ma se ti colleghi con il tuo browser e fai la prova, non ottieni la simulazione che cerchi?

    In tutto ciò che hai descritto, che c'entra la connessione a mysql persistente et similia? :bho:

    A quanto ho capito io, hai fatto tutto, tutto funziona (con normale gestione del db) e devi solo fare le prove, giusto?


  • User

    eccoti un possibile scenario

    1)il cliente trova un oggetto sul sito del commerciante e lo vuole comprare

    2)il cliente sceglie di comprare ed è un utente paypal come lo è anche il commerciante
    3)il commerciante passa i parametri (id commerciante, id cliente,account paypal commerciante,account paypal cliente,euro transazione) al mio codice 4)il mio codice passa la palla a paypal con i suddetti parametri
    5)paypal ha già tutto compilato li manca solo la password del cliente
    6)il cliente mette la password ed accetta la transazione
    7)paypal tramite ipn fa i suoi controlli con il mio server,scrive sul mio db i parametri della transazione e tutto finisce

    ora il tutto funziona con una sola transazione alla volta, io vorrei rendere tutto multitransazione così ti chiedo se esiste un modo per fare tutto ciò e le rispettive limitazioni in cui si può incappare

    discutendo qua è la mi hanno consigliato di utilizzare le connessioni tramite https in modo tale che il canale risulti esclusivo per ogni transazione inoltre volevo sapere quale è il numero limite di transazioni che io posso gestire


  • User Attivo

    ok, la connessione php/mysql non c'entra nulla! Forse mi sfugge qualcosa ma non credo.

    3)il commerciante passa i parametri (id commerciante, id cliente,account paypal commerciante,account paypal cliente,euro transazione) al mio codice
    Bene, se lo fa da solo o insieme ad altri 100 non cambia nulla e funziona tutto. Il tuo codice è una pagina php qualunque, e come tale può essere richiamata più volte contemporaneamente.

    4)il mio codice passa la palla a paypal con i suddetti parametri
    In base al successivo punto 6 mi pare di capire che l'utente va a finire su paypal: tu non c'entri più nulla, è ancora tutto OK.

    7)paypal tramite ipn fa i suoi controlli con il mio server,scrive sul mio db i parametri della transazione e tutto finisce

    Ancora nessun problema: se ci sono più istanze di paypal che richiamano il tuo script questo risponde ad ognuna di esse. Quando tramite ipn viene contattato il tuo script, questo funziona e risponde anche se ci sono altre N istanze dello stesso script in esecuzione. Senza considerare il fatto che paypal se non riesce a contattare il tuo server riprova dopo un po'.

    Gli altri punti non credo destino preoccupazione.

    In quale punto di quelli da te elencati pensi si possa effettuare una sola connessione/transazione per volta? E dove interviene la connessione HTTPS?


  • User

    senti io stavo leggendo su wikipedia riguardo l'https questo:

    "Questa tecnologia quindi può essere usata anche per permettere un accesso limitato ad un web server. L'amministratore spesso crea dei certificati per ogni utente che vengono caricati nei loro browser contententi informazioni come il relativo nome e indirizzo e-mail in modo tale da permettere al server di riconoscere l'utente nel momento in cui quest'ultimo tenti di riconnettersi senza immettere nome utente e/o password."

    ora il mio problema è sapere se c'è un numero massimo di transazioni alla volta e se si chi è il responsabile?
    e poi devo creare il codice che utilizza il commerciante per passare i parametri.
    ed infine volevo sapere se io ho N richieste e paypal ha un protocollo https creando così per ogni richiesta un suo canale, il mio codice non fa da imbuto? se si come si può rimediare?
    grazie e scusami se ti incasino la vita!!!!


  • User Attivo

    Quell'utilizzo lì del protocollo HTTPS è decisamente molto avanzato e poco utilizzato.

    Quello utilizzato nella maggior parte dei casi (tipo paypal) è solo una cifratura così che se qualche malintenzionato intercetta la comunicazione non capisce nulla (carta di credito e dati personali) perché la decodifica necessita di una chiave che è sul tuo browser.

    ora il mio problema è sapere se c'è un numero massimo di transazioni alla volta e se si chi è il responsabile?

    No, o meglio, quelle che il tuo server supporta (se non le supporta più vuol dire che sei diventato ricco e puoi ritirarti a vita privata:fumato:)

    ed infine volevo sapere se io ho N richieste e paypal ha un protocollo https creando così per ogni richiesta un suo canale, il mio codice non fa da imbuto?
    Ma paypal ti contatta via HTTPS per ipn? Mi pare che l'opzione ci sia ma considera che non è assolutamente necessario (leggi le loro FAQ) e anche se fosse, non hai alcun limite (come sopra).

    Direi che se tutto funziona (e se ci siamo spiegati/capiti bene) puoi andare tranquillo.


  • User

    cambio tutto o quasi!!!!!
    1)il cliente sceglie l'oggetto dal sito del negoziante e decide di comprarlo
    2)il negoziante chiama il mio codice e passa i parametri(id commerciante, id cliente,account paypal commerciante,account paypal cliente,euro transazione)
    3)il mio codice dovrebbe prendere i parametri dal negoziante registrarli e prendere il cliente e indirizzarlo alla pagina già riempita di paypal
    4)il cliente fa il login in paypal accetta la transazione e finisce tutto per lui
    5)mentre paypal tramite ipn fa le sue verifiche con il mio server e scrive sul mio db i dati della transazione.

    ora come faccio a prendere la connessione del cliente,associare i parametri e mandarli sulla pagina di paypal???

    rispondetemi vi prego sono in crisi!!!!!