Oggi quasi tutti i gli hosting providers utilizzano Cloudflare per utilizzare al meglio le risorse dei server.
Cloudflare però aspetta la risposta del server per massimo 100 secondi dopo di che va in errore 524 di timeout.
Se devi eseguire uno script che richiede più di quel tempo non puoi farci nulla, non c'è modo che Cloudflare ti abiliti un tempo più lungo, tranne che sugli account Enterprise ... ma noi non siamo il capitano Kirk e nemmeno Spock ...
Un modo per bypassare questo limite è quello di eseguire uno script in PHP con quello che io definisco "fire and forget". Cioè lanciamo lo script e ritorniamo subito la risposta al server, lasciando lo script in esecuzione in backuground.
Come farlo? Ma con uno script in PHP ovviamente!
Solo che dobbiamo aver cura di gestire due script. Il primo sarà quello richiamabile dall'esterno ed il secondo sarà lo script eseguito in background.
Esempio:
Script da eseguire in background per un lungo periodo:
Script luuuungo:
// script1.php
<?php
sleep(200);
echo "faccio tante cose";
sleep(1000);
echo "perdo molto tempo";
?>
Script che viene eseguito tramite get di URL e che esegue lo script di sopra:
// script2.php
<?php
exec("php script1.php > /dev/null &");
echo "ho finito subito! il lavoro intanto sta procedendo";
?>
(-;
Nessun commento:
Posta un commento