Ich habe das Queue-System in Laravel 4 verwendet und es funktioniert super! - Ich habe mich gefragt, ob es einen Weg gibt, um zu sehen, was eigentlich in der Warteschlange ist? Ich benutze redis für das Backend.Laravel 4 Queue
Antwort
Ich verbrachte einige Zeit mit diesem Graben um den Queue-Treiber und die API. Ich konnte eine Antwort für dich finden.
Short TL; DR Version:
Es gibt keine native Queue::getList()
(oder ähnlich) Funktion auf der Queue-Schnittstelle. wenn Sie mehrere Warteschlangen-Röhren laufen
$list = (Queue::getRedis()->command('LRANGE',['queues:default', '0', '-1']));
Änderung default
auf einen anderen Namen:
Aber dies wird Ihnen eine Liste aller Jobs in der Warteschlange in Ihrer default
Redis Warteschlange erhalten warten verarbeitet werden.
gewarnt, dass Befehl in einer sehr großen Datenmenge zurückgegeben führen könnte (es ist wie ein Teil Ihrer Datenbank Dumping) - so möchten Sie vielleicht nur die Zahl der Arbeitsplätze, anstatt die Warteschlange gestellt bekommen:
$queue_length = (Queue::getRedis()->command('LLEN',['queues:default']));
Längere Version:
Es gibt keine native Queue::getList()
(oder ähnliche) Funktion in der Warteschlangenschnittstelle. Aber ich merkte, dass es möglich ist, die Redis-Treiber von der Queue-Schnittstelle zu erhalten:
$redis = Queue::getRedis();
Graben in den Redis Fahrer - wir dort sehen kann, ist eine Funktion command()
genannt. Die als
command(string $method, array $parameters = array())
Run a command against the Redis database.
ist so definiert, bedeutet, dass wir jetzt alle nativen Redis Befehl durch Laravel auf die Redis Instanz ausgeführt werden kann.
A full list of Redis commands is here
Durch diese Liste Surfen - Wir haben eine Reihe hilfreicher Befehle, die wir für Warteschlangen verwenden können.
Erstens - können Sie alle KEYS
verfügbar sehen - was nützlich sein könnte, wenn Sie nicht sicher, ob der Name Ihrer Warteschlangen sind:
$keys = Queue::getRedis()->command('KEYS',['*']);
Sie auch sicher, dass ein bestimmter Schlüssel vorhanden ist vor dem Ausführen einer weiteren Operation machen - wie folgt aus:
if (Queue::getRedis()->command('EXISTS',['queues:default']))
{
// Queues:default key exists!
}
auch - können Sie die Länge der Warteschlange zu bekommen - was nützlich ist,
$queue_length = (Queue::getRedis()->command('LLEN',['queues:default']));
Und schließlich können Sie die gesamte Liste der Warteschlangen mit diesem
$list = (Queue::getRedis()->command('LRANGE',['queues:default1', '0', '-1']));
bekommen Wenn Sie die vollständige Liste nicht wollen (vielleicht ist die Warteschlange ziemlich groß) - Sie eine Teilmenge davon bekommen kann. Read more a LRANGE at the Redis docs here.
@Ben Kilah - beantwortet das deine Frage? Brauchen Sie weitere Informationen? – Laurence
vielen Dank, ausgezeichnete Antwort, tut mir leid, ich war zu spät zur Party! :) –
nicht genau für Ihren Fall, sondern nur als Referenz für andere.
Wenn Sie Treiber verwenden beanstalkd als Sie diese Informationen wie folgt zugreifen können:
array(
'current-jobs-urgent' => '0',
'current-jobs-ready' => '5',
'current-jobs-reserved' => '0',
'current-jobs-delayed' => '0',
'current-jobs-buried' => '0',
'cmd-put' => '95',
'cmd-peek' => '0',
'cmd-peek-ready' => '130',
'cmd-peek-delayed' => '32',
'cmd-peek-buried' => '32',
'cmd-reserve' => '0',
'cmd-reserve-with-timeout' => '1142',
'cmd-delete' => '90',
'cmd-release' => '1124',
'cmd-use' => '194',
'cmd-watch' => '0',
'cmd-ignore' => '0',
'cmd-bury' => '0',
'cmd-kick' => '0',
'cmd-touch' => '0',
'cmd-stats' => '37',
'cmd-stats-job' => '32',
'cmd-stats-tube' => '78822',
'cmd-list-tubes' => '78822',
'cmd-list-tube-used' => '0',
'cmd-list-tubes-watched' => '0',
'cmd-pause-tube' => '0',
'job-timeouts' => '3',
'total-jobs' => '95',
'max-job-size' => '65535',
'current-tubes' => '1',
'current-connections' => '1',
'current-producers' => '0',
'current-workers' => '0',
'current-waiting' => '0',
'total-connections' => '40679',
'pid' => '15937',
'version' => '1.10',
'rusage-utime' => '6.184000',
'rusage-stime' => '16.808000',
'uptime' => '146790',
'binlog-oldest-index' => '0',
'binlog-current-index' => '0',
'binlog-records-migrated' => '0',
'binlog-records-written' => '0',
'binlog-max-size' => '10485760',
'id' => '56d8d2c9888219bc',
'hostname' => 'ddeath-pc',
)
so dann zum Beispiel $stats['current-jobs-ready']
werden Arbeitsplätze zurück:
$stats = Queue::getPheanstalk()->stats();
, wo die Statistiken Variable diese Eigenschaften haben bereit, vom Arbeiter verarbeitet zu werden.
- 1. Laravel Queue Unserialisierung Problem
- 2. Ausführlich Modus für Laravel 4 Queue Listener aktivieren
- 3. Laravel Queue Arbeiter auf Heroku
- 4. Queue in Laravel startet nicht
- 5. Laravel 5 und Laravel 4
- 6. Laravel Iron Queue :: push scheint nicht asynchron
- 7. Wie Laravel Queue in Online-Server
- 8. Unit Test Mail Queue auf Laravel 5
- 9. Laravel 4 - Catch Fehler
- 10. Laravel 4 - Datei-Upload
- 11. Laravel 4 benutzerdefinierte Auth
- 12. Laravel 4 Stecksystem
- 13. Laravel 4 CORS Installation
- 14. Laravel 4 Form Texteingabe
- 15. Laravel überschreiben 4 Paketansicht
- 16. Laravel 4 HTML-Bilder
- 17. Unset cookie Laravel 4
- 18. Laravel 4 Datei hochladen
- 19. MethodNotAllowedHttpException Laravel-4
- 20. JSONArray Parsing Laravel 4
- 21. Laravel 4 Validierung
- 22. Laravel 4: Klasse nicht
- 23. Laravel 4 nach Hause
- 24. Wie funktioniert Laravel Queue und was ist, wenn php artisan Queue: Hören stoppt
- 25. Laravel 4 Blade-Vorlagen Dokumentation
- 26. URL-Segment mit Laravel 4
- 27. Zweig Vorlagen in Laravel 4
- 28. Paket-Controller in Laravel 4
- 29. Laravel 4 Authentifizierung funktioniert nicht
- 30. Ungültige Versionszeichenfolge "4.x.x" + Laravel
Was meinst du mit "in der Warteschlange"? –
was auch immer in der Warteschlange war und immer noch darauf wartet, bearbeitet zu werden –
Hast du es mit php artisan queue probiert: hör zu? – Alen