Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Soluzione per Azione Programmata

    Salve. Vista l'impossibilità di fissare delle azioni che vengano eseguite in orari prefissati col php, ho adottato una soluzione che per quel che serve a me non è male, ma mi da qualche volta dei problemi.

    In pratica dovendo far eseguire un file tra le 18:00 e le 18:30(UNA SOLA VOLTA AL GIORNO) ho incluso questo file nel login al sito che effettuano gli utenti, ma l'inclusione funziona solo se l'if conferma l'orario. Una volta eseguito il file, questo
    aggiorna la data a quella odierna, così impedendo ulteriori inclusioni dello stesso file.

    Ho potuto adottare questa soluzione poichè il sito è molto trafficato e quindi ci sono login a tutte le ore.

    Il problema che riscontro qualche volta è quando ci sono 2 o più utenti che effettuano il login nello stesso momento. Come potete già intuire, effettuando il login contemporaneamente il campo data non è stato ancra aggiornato da uno dei due utenti, e quindi il file viene incluso due volte.

    Ovviamente più cresce l'utenza, come si sta verificando, e più riscontro questo problema.


    Come potre risolverlo?Avete idee o soluzioni'

    grazie mille
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  2. #2
    Vista l'impossibilità di fissare delle azioni che vengano eseguite in orari prefissati col php
    Perchè "l'impossibilità"?

    Il problema che riscontro qualche volta è quando ci sono 2 o più utenti che effettuano il login nello stesso momento.
    E' sufficiente implementare un sistema di locking/logging che informi lo script della precedente esecuzione ed in quel caso, non proceda.

  3. #3
    Originariamente inviato da filippo.toso
    Perchè "l'impossibilità"?
    beh perchè che io sappia il php non ha questa potenzialità

    E' sufficiente implementare un sistema di locking/logging che informi lo script della precedente esecuzione ed in quel caso, non proceda.
    puoi spiegarti meglio?
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  4. #4
    up
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  5. #5
    Originariamente inviato da Manuelandro
    beh perchè che io sappia il php non ha questa potenzialità

    beh, ne php ne apache hanno questa funzionalità, ma cron si!
    cron su linux e operazioni pianificate su winzoz (ovviamente se il server è tuo, oppure se sei in housing; altrimenti ci sono servizi che lo gestiscono a gratis, tipo http://www.webcron.org)

    Originariamente inviato da Manuelandro
    puoi spiegarti meglio?
    manuale sul file locking
    credo intendesse dire questo
    Perchè essere stupidi non è una menomazione ma un diritto di tutti!!!

  6. #6
    Originariamente inviato da sonounostrinato
    altrimenti ci sono servizi che lo gestiscono a gratis, tipo http://www.webcron.org)
    c'è ne uno del genere a pagamento? questo è gratis ma te ne offre 3! Si possono acquistare gli altri, ma con allopass e ci ho provato ma è un casino e non ho voglia di usarlo quel servizio
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  7. #7
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ebh, potresti sempre usare una tabella del db

    ti crei uan tabella con 4 campi

    ID
    data
    esito
    log

    ad ogni accesso verifichi se esiste la data attuale e se l' esito è positivo. se non esiste esegui lo script e crei il record con i suoi risultati...

    al max se hai paura di una doppia esecuzione fai un lock sulla tabella dallo script che esegue l'operazione

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  8. #8
    Se usi una versione di mysql che supporta le transazioni e le tabelle InnoDB dovresti fare cosi...
    Cambia la modalità della tabella da MyIsam a InnoDB, poi fai un lavoro di questo tipo:

    inizia con un BEGIN

    mysql_query("BEGIN");

    quando controlli la data nella SELECT metti un FOR UPDATE alla fine

    SELECT data FROM check FOR UPDATE

    questo blocca gli altri script che devono fare la stessa SELECT finche non viene eseguita quella di chi è arrivato primo!

    e alla fine di tutto

    COMMIT se tutto va bene, quindi "valida" la query
    ROLLBACK se c'è qualche errore, riportando tutto com'era prima!

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.