Lanciare un processo asincrono da una pagina php

Ciao a tutti,

non so se vi è mai capitato, ma io ho avuto bisogno di eseguire un processo asincrono da una pagina php e che fosse anche esso uno script php.

La cosa sembra facile … exec(command) … ma non è così …
prima di tutto abbiamo limitazioni dovute al sistema operativo (sotto Windows è problematico dare accessi a processi shell da parte del web server per motivi di sicurezza), ma anche sottop unix dove è semplice abbiamo delle limitazioni.

Affinché un processo sia eseguibile con la exec da parte di una pagina php è necessario che non solo siano ridiretti a null, ma che siano anche chiusi sia gli stream di standard output che quelli di standard error.

Supponiamo di avere un processo asincrono che vogliamo eseguire che si chiama /miadirectory/mioprocesso.php e che necessiti di 3 parametri (param1, param2, param3), quello che dobbiamo fare nella pagina chiamante è preparare l’esecuzione:

$exec_cmd=”/usr/local/bin/php -q /miadirectory/mioprocesso.php param1 param2 param3 2>/dev/null >&- < &- >/dev/null &”;

e quindi lanciare l’esecuzione asincrona con:

exec($exec_cmd);

E’ solo un piccolo trucco, ma spero possa essere utile a qualcuno … ricordatevi che funziona solo sotto Unix

Lunghi giorni e piacevoli notti a tutti

Un Commento a “Lanciare un processo asincrono da una pagina php”

  1. Phil scrive:

    I tricks and i WorkAround mandano avanti il mondo informatico :)
    Phil

Lascia un Commento

Devi aver fatto il login per inviare un commento