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
I tricks and i WorkAround mandano avanti il mondo informatico
Phil