Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    [PHP] From command line

    ciao a tutti,

    ho un pagina php ch può essere richiamata da shell di linux (tramite cron),
    Solo che vorrei avere un if che mi permetta di controllare se è stata richiamata da shell o da webserver, che controllo serve?

    fino ad ora ho sempre fatto il contollo di presenza argv[0] ma è possibile che non mi passino proprio niente, e in questo caso come controllare che sia chiamata da shell?

    Grazie a tutti
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    usa una query string
    php /usr/webcron/test/mioscript.php?caller=shell

    ..... se la chiami la url
    http://www.miositodiprovacosefighe.c...php?caller=web

  3. #3
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    ok fantastico grazie mille
    Che mestiere difficile.....essere da soli ancora di più

  4. #4
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    no prob e' un modo come altri...


    L'unica nota e' che potrebbe essere fregato se imposti la query string da http....

    Potresti nel caso controllare le server vars $_SERVER["quellocheisa"] cosi' la cosa sarebbe un pelo piu' automatica e saresti piu' sicuro ... vedi te

  5. #5
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    ho però un altro problema relativo alla chiamata batch, quello della session_start, ma forse mi hai risposto con la seconda....
    posto il codice così mi puoi dire se ci sono cavolte, perchè per funzionare funziona.
    Codice PHP:
    if(isset($_SERVER["SERVER_PROTOCOL"]) && ){
        
    session_start();
        if (!isset(
    $_SESSION['utente'])){
            
    header('location:login.php?war=Sessione Scaduta necessario ricollegarsi');exit();
        }
        
    $user=$_SESSION['utente'];
    }else{
        
    $user="BATCH";

    Che mestiere difficile.....essere da soli ancora di più

  6. #6
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Uhm ..... il probloema mi sa e' il sessionId che in cron/command line non viene intercettato proprio perche' il chiamante non lo spedisce.

    Puoi risolverlo gestendoti il sessionId (credo)... non ho mai provato pero'
    Ma in teoria dovresti poter accedere alla sessione a patto di conoscerne il relativo id che potresti nel caso tracciare in tabella sql.

    Solo che in questi casi le cose diventano un poco piu' complesse, e la gestione delle sessioni implica un bel po' di problemi.

    Cmq come hai fatto e' un controllo che va bene per quello che devi fare.

    Poi dipende cosa devi gestire e se ti servono assolutamente i dati di sessione.

  7. #7
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    a parte i caratteri "&&" nell'if che non centrano

    Infatti nella chiamata cron non mi interessano i sessionid anzi non esistono neanche.

    Se è settata la variabile server_protocoll (almeno dalle mie prove) segnifica che è una chiamata "web" in caso contrario non vado ad aprire la sessione ma setto una variabile generica $user...

    nel work flow del programma non faccio mai reiferimento a variabili $_SESSION se non per il controllo di autenticazione all'inizio che è veicolaro dall'if.

    Non riesco a capire bene ciò che mi hai detto riguardo al problema sessionid
    Che mestiere difficile.....essere da soli ancora di più

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Allora le variabili $_SERVER sono le superglobals che tengono i dati appunto del server.
    Se lanci php da command line (ad esempio cron) la superglobal $_SERVER pertanto puo' non avere tutti i campi o non esistere(non ho testato molto da questo punto di vista).

    Quindi si appunto il controllo del protocollo puo' essere un giusto campo da controllare.

    Per le sessioni ti lacio qualche appunto dopo ora non ho tempo.

    A dopo

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Eccomi allora per le sessioni queste sono gestite internamente da PHP a meno che non lo fai con i relativi handlers etc...

    Tutto parte però dal session id, questo dato viene spedito nel cookie PHPSESSID ( a meno di modifiche) o come parametro get. QUesto codice identifica la sessione dell'utente nel server. E php lo cerca quando fai il session start etc..... ( e poi tutta la solita trafila di controlli e creazione della superGlobal $_SESSION ) .

    Se lanci da cron o gestisci manualmente il session id oppure non puoi accedere ai dati di sessione.
    Io nn ho mai provato da command line ad accedere a sessione in quanto solitamente sono tutti script di gestione interna.

  10. #10
    Non ho capito a che serve il session_start in uno script richiamato da cron... mi sono perso qualcosa nel discorso forse? Venendo dal cron, lo script deve partire da A e finire in B e la volta successiva ci sarà una A1 che non avrà memoria di A (a meno di non salvarsi dati nel db)...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.