Parfois, lorsque j'envoie un jeu de données volumineux vers un Job, mon utilitaire de file d'attente se ferme brusquement.
// $taskmetas is an array with other arrays, each subsequent array having 90 properties.
$this->dispatch(new ProcessExcelData($Excel_data, $taskmetas, $iteration, $storage_path));
La classe de travail ProcessExcelData
crée un fichier Excel à l’aide de box/spout package.
$taskmetas
a 880 lignes - fonctionne très bien $taskmetas
a 10 000 lignes - se termine brusquement 1er exemple - sortie de la file d'attente avec un petit jeu de données:
forge@user:~/myapp.com$ php artisan queue:work --tries=1
[2017-08-07 02:44:48] Processing: App\Jobs\ProcessExcelData
[2017-08-07 02:44:48] Processed: App\Jobs\ProcessExcelData
2ème exemple - sortie en file d'attente avec un grand ensemble de données: _
forge@user:~/myapp.com$ php artisan queue:work --tries=1
[2017-08-07 03:18:47] Processing: App\Jobs\ProcessExcelData
Killed
Je ne reçois aucun message d'erreur, les journaux sont vides et le travail n'apparaît pas dans la table failed_jobs
comme pour les autres erreurs. La limite de temps est fixée à 1 heure et la limite de mémoire à 2 Go.
Pourquoi mes files d'attente s'arrêtent-elles brusquement?
Vous pouvez essayer avec un délai d'attente. Pour par exemple. File d'attente artisanal: travail - timeout = 120
Par défaut, le délai d'expiration est de 60 secondes. Par conséquent, nous annulons avec force le délai d'expiration mentionné ci-dessus.
Cela a fonctionné pour moi:
J'ai eu un travail Supervisord:
Job ID, Queue, Processes, Timeout, Sleep Time, Tries, Action Job_1,
Default, 1, 60, 3, 3
https://laravel.com/docs/5.6/queues#retrying-failed-jobs dit:
Pour supprimer tous vos travaux ayant échoué, vous pouvez utiliser la commande queue: flush:
php artisan queue:flush
C'est ce que j'ai fait (après avoir exécuté php artisan queue:failed
pour voir qu'il y avait des travaux en échec).
Ensuite, j'ai supprimé mon travail Supervisord et en ai créé un nouveau avec un délai d'expiration de 360 secondes.
Il est également important de se rappeler que le redémarrage du travail Supervisord (dans le panneau de configuration de mon application Cloudways) et le processus complet de Supervisord (dans le panneau de configuration de mon serveur Cloudways).
Après avoir tenté de relancer mon travail, je l'ai remarqué dans la table failed_jobs
et lu que l'exception était liée aux autorisations de fichiers cache. J'ai donc cliqué sur le bouton Réinitialiser les autorisations dans le tableau de bord Cloudways de mon application.
Il y a 2 options. Soit manque de mémoire, soit dépasse le temps d'exécution.
Essayez $ dmesg | grep php
Cela vous montrera plus de détails
Augmentez max_execution_time
et/ou memory_limit
dans votre fichier php.ini.