Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. [Script] Utilizzare cron senza account di root
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • P
      probid Super User • ultima modifica di

      [Script] Utilizzare cron senza account di root

      In php.net c'è uno script che permette di simulare la funzione cron eseguibile da linux soltanto avendo accesso al server come root.
      Questa funzione permette di effettuare operazioni php ad un determinato orario,es. backup del db.
      Per chi non avesse i privilegi amministrativi (per esempio se si ha un sito hostato da AV o da Netsons,e simili) c'è invece questo script che secondo me è utilissimo.
      [php]
      <?php
      ignore_user_abort(); // funzione per far continuare l'esecuzione dello script anche dopo la chiusura della pagina
      set_time_limit(0); // funzione per far continuare lo script all'infinito
      $interval=60*15; // ogni 15 minuti...
      do{

      // funzioni da svolgere ogni 15 minuti

      sleep($interval); // funzione per attendere 15 minuti dopo l'intervento
      }while(true);
      ?> [/php]Fatene buon uso! 😉
      Ciao!

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • O
        olaola User Attivo • ultima modifica di

        buono a sapersi, solo mi chiedevo: per attivare lo script devo entrare nella pagina che contiene questo codice, giusto? E se entro in tale pagina piu' di una volta, attivo piu' volte questo cron?

        non so' se sono stato spiegato 😉

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • P
          probid Super User • ultima modifica di

          Si devi accedere alla pagina,e ogni volta che lo fai il timer riparte.
          Per esempio se uno accede alla pagina alle 17.00 l'esecuzione la volta successiva avverrà alle 17.15,poi alle 17.30.
          Se uno però visita di nuovo la pagina alle 17.02,le future esecuzioni saranno alle 17.17 e alle 17.32 🙂

          Forse io ho capito la tua paura,quella che un utente visiti la pagina azzerando il timer.
          Ho avuto anch'io la stessa preoccupazione 😄
          Potresti risolvere però mettendo un parametro get nascosto che avvii l'applicazione in questo modo:

          [php]
          <?php
          if ($_GET[action]=="avvia_timer"){
          ignore_user_abort(); // funzione per far continuare l'esecuzione dello script anche dopo la chiusura della pagina
          set_time_limit(0); // funzione per far continuare lo script all'infinito
          $interval=60*15; // ogni 15 minuti...
          do{

          // funzioni da svolgere ogni 15 minuti

          sleep($interval); // funzione per attendere 15 minuti dopo l'intervento
          }while(true);
          }
          else{exit();}?>
          [/php]
          Ora l'esecuzione avverrà soltanto se alla querystring della pagina richiamata viene aggiunto:

          "action=avvia_timer"

          In alternativa si può creare un login da amministratore che stabilisce una sessione e svolgere l'operazione solo se a sessione stabilita 🙂

          Se invece vuoi creare più timer puoi costruire un file per ogni operazione da svolgere e avviarli...

          Ciao!

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • B
            bazzilla User • ultima modifica di

            Interessantissima chicca.

            Perdonatemi però la domanda banale: se io chiudo il browser dopo avere lanciato la pagina in questione, le funzioni non verranno più svolte vero?

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • M
              mz User Attivo • ultima modifica di

              Grazie Probid, lo segnalo nella raccolta dei thread utili, sarebbe un peccato perderlo.

              :ciauz:

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • O
                olaola User Attivo • ultima modifica di

                @Bazzilla said:

                Interessantissima chicca.

                Perdonatemi però la domanda banale: se io chiudo il browser dopo avere lanciato la pagina in questione, le funzioni non verranno più svolte vero?

                no, continueranno a girare, perche' e' presente questa istruzione
                [php]ignore_user_abort(); // funzione per far continuare l'esecuzione dello script anche dopo la chiusura della pagina[/php]

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • B
                  bazzilla User • ultima modifica di

                  @olaola said:

                  no, continueranno a girare, perche' e' presente questa istruzione
                  [php]ignore_user_abort(); // funzione per far continuare l'esecuzione dello script anche dopo la chiusura della pagina[/php]

                  Mi era sfuggita quella istruzione (che tra l'altro non conoscevo).
                  Grazie per l'osservazione.:ciauz:

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • D
                    dragone67 User Attivo • ultima modifica di

                    @olaola said:

                    no, continueranno a girare, perche' e' presente questa istruzione
                    [php]ignore_user_abort(); // funzione per far continuare l'esecuzione dello script anche dopo la chiusura della pagina[/php]

                    Quindi per far interrompere l'esecuzione cosa bisogna fare ? Riavviare il server ?

                    Ciao

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • O
                      olaola User Attivo • ultima modifica di

                      Intervengo per correggere un errorino nello script proposto di cui mi sono accorto leggendo la pagina della documentazione della funzione ignore_user_abort.
                      Tale funzione, chiamata senza argomanti, restituisce solo lo stato attuale delle impostazioni. Per attivarla bisogna chiamarla con
                      [PHP]ignore_user_abort(TRUE);[/PHP]

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • D
                        desu User • ultima modifica di

                        bella e utile questa chicca!
                        xò mi unisco alla domanda di dragone67!
                        Per interrompere lo script quindi bisogna riavviare il server?
                        se così fosse una volta avviato uno script in un server esterno che non si è un grado di controllare (es. aruba) non si potrebbe più fermare?
                        oppure semplicemente si cancella la pagina e stop?
                        scusate, magari è una stupidaggine ma sono stanco oggi, non riesco a ragionare 😢

                        grazie
                        ciao ciao

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • B
                          bazzilla User • ultima modifica di

                          @desu said:

                          scusate, magari è una stupidaggine ma sono stanco oggi, non riesco a ragionare 😢

                          Male comune...:sonno:

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • B
                            bazzilla User • ultima modifica di

                            @desu said:

                            Per interrompere lo script quindi bisogna riavviare il server?
                            se così fosse una volta avviato uno script in un server esterno che non si è un grado di controllare (es. aruba) non si potrebbe più fermare?
                            oppure semplicemente si cancella la pagina e stop?

                            La questione però interessa anche a me: come si ferma lo script?

                            Proverei da solo, ma non ho PHP in locale.

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • A
                              ares User • ultima modifica di

                              mi associo...

                              come si fa ad interrompere l'esecuzione dello script?

                              grazie... ottimo 3d

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • A
                                ares User • ultima modifica di

                                scusate se rompo...

                                ma qualcuno sa come interrompere l'esecuzione del cron una volta avviata?

                                grazie anticipatamente

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • T
                                  tifo.milan.it Bannato User Attivo • ultima modifica di

                                  non ne sono certo ma se > ignore_user_abort(TRUE);
                                  non permette di interrompere l'esecuzione a questo punto basta eliminare quella riga uppare nuovamente far ripartire l'esecuzione e chiudere il browser

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  • B
                                    brontolo77 User • ultima modifica di

                                    Ho provato come uno stupido lo script postato all'inizio della discussione
                                    risultato mi arriva una email ogni minuto e va bene (era previsto)
                                    MA, ora, non so come fermarlo...

                                    Help me

                                    0 Miglior Risposta Ringrazia Cita Rispondi

                                      1 Risposta Ultima Risposta
                                    • massimux
                                      massimux Moderatore • ultima modifica di

                                      ignore_user_abort(TRUE);

                                      eliminala e quando chiudi la pagina si blocca tutto 🙂

                                      0 Miglior Risposta Ringrazia Cita Rispondi

                                        1 Risposta Ultima Risposta
                                      • B
                                        brontolo77 User • ultima modifica di

                                        ho provato...

                                        ho levato tutto e anche riavviato il pc ma continuo a ricevere email, ci vorrebbe una funzione php per eliminare i demoni o simili....

                                        ps:grazie comunque.

                                        0 Miglior Risposta Ringrazia Cita Rispondi

                                          1 Risposta Ultima Risposta
                                        • A
                                          ares User • ultima modifica di

                                          se riavvi il pc è strano che continui a funzionare, a meno che non hai il server (apache) che si avvia all'avvio di windows.

                                          0 Miglior Risposta Ringrazia Cita Rispondi

                                            1 Risposta Ultima Risposta
                                          • B
                                            brontolo77 User • ultima modifica di

                                            No io non ho apache.
                                            non ho nessun server locale.

                                            comunque ho lanciato quel comando su REGISTER... se ti può essere utile.

                                            0 Miglior Risposta Ringrazia Cita Rispondi

                                              1 Risposta Ultima Risposta
                                            Caricamento altri post
                                            Rispondi
                                            • Topic risposta
                                            Effettua l'accesso per rispondere
                                            • Da Vecchi a Nuovi
                                            • Da Nuovi a Vecchi
                                            • Più Voti