Ho uno script PHP che interroga un database per un elenco dei lavori da fare e spara altri script PHP sulla base di ciò che trova nel database (in pratica una coda di processo).PHP shell_exec attendere lo script per finire?
Alcuni degli script che lo script della coda corridore esegue potrebbe richiedere 30 secondi o giù di lì per completare l'esecuzione (la generazione di file PDF, il ridimensionamento delle immagini, ecc).
Il problema è che lo script shell_exec()
nello script di coda chiama gli script di elaborazione, ma non attende che finiscano, con il risultato che la coda non viene completata.
Coda di script runner:
#!/usr/bin/php
<?php
// Loop through database and find jobs to be done
shell_exec(sprintf("/root/scripts/%s.php", $row['jobName']));
?>
script di processo:
#!/usr/bin/php
<?php
shell_exec("/usr/bin/htmldoc -t pdf --webpage test.html > test.pdf");
// Update database to mark job as completed
?>
Esecuzione dello script di processo direttamente dalla riga di comando funziona e viene creato il PDF.
Tutte le idee su come risolvere questo problema? O un modo migliore per eseguire una coda di processo?
Si prega di mostrare un po 'di codice –