Χαρακτηριστικά PHP
Το Queuety υποστηρίζει 8 χαρακτηριστικά PHP για καταχώριση διαχειριστών χωρίς ρύθμιση. Προσθέστε σχολιασμούς στις κλάσεις διαχειριστών σας με το #[QueuetyHandler] και χρησιμοποιήστε την αυτόματη ανακάλυψη για να τις καταχωρίσετε όλες μαζί.
Το χαρακτηριστικό #[QueuetyHandler]
use Queuety\Handler;
use Queuety\Attributes\QueuetyHandler;
#[QueuetyHandler( name: 'send_email', queue: 'emails', max_attempts: 5 )]
class SendEmailHandler implements Handler {
public function handle( array $payload ): void {
wp_mail( $payload['to'], $payload['subject'], $payload['body'] );
}
public function config(): array {
return [];
}
}
Οι παράμετροι του χαρακτηριστικού:
| Παράμετρος | Τύπος | Προεπιλογή | Περιγραφή |
|---|---|---|---|
name |
string |
(απαιτείται) | Όνομα διαχειριστή που χρησιμοποιείται για την αποστολή |
queue |
string |
'default' |
Προεπιλεγμένη ουρά για αυτόν τον διαχειριστή |
max_attempts |
int |
3 |
Μέγιστος αριθμός εκτελέσεων πριν η εργασία τεθεί στο περιθώριο |
needs_wordpress |
bool |
false |
Αποθηκεύεται στο χαρακτηριστικό· το Queuety δεν το διαβάζει προς το παρόν |
Αυτόματη ανακάλυψη
Σαρώστε έναν κατάλογο για σχολιασμένες κλάσεις διαχειριστών και καταχωρίστε τις όλες:
use Queuety\Queuety;
$count = Queuety::discover_handlers(
__DIR__ . '/handlers', // directory to scan
'MyPlugin\\Handlers' // PSR-4 namespace prefix
);
// $count = number of handlers registered
Αυτό εκτελεί σάρωση κάθε αρχείου .php στον κατάλογο και στους υποκαταλόγους του, συνάγει το όνομα κάθε κλάσης από το πρόθεμα namespace και τη διαδρομή αρχείου, τη φορτώνει μέσω του autoloader σας και καταχωρίζει τις κλάσεις που φέρουν το χαρακτηριστικό #[QueuetyHandler] και υλοποιούν το Handler, το Step ή το Contracts\Job.
Αυτόματη ανακάλυψη μέσω CLI
# Preview discovered handlers
wp queuety discover /path/to/handlers MyPlugin\\Handlers
# Discover and register
wp queuety discover /path/to/handlers MyPlugin\\Handlers --register
Παράδειγμα εξόδου:
+-----------------------------------+----------+------------+
| class | type | name |
+-----------------------------------+----------+------------+
| MyPlugin\Handlers\SendEmailHandler | handler | send_email |
| MyPlugin\Handlers\SyncDataHandler | handler | sync_data |
| MyPlugin\Handlers\BuildPromptStep | step | (none) |
+-----------------------------------+----------+------------+
Βέλτιστη πρακτική
Καταχωρίστε τους διαχειριστές κατά την αρχικοποίηση του πρόσθετου σας:
add_action( 'plugins_loaded', function () {
Queuety::discover_handlers(
__DIR__ . '/src/Handlers',
'MyPlugin\\Handlers'
);
} );
Αυτό αντικαθιστά τις χειροκίνητες κλήσεις Queuety::register() για κάθε διαχειριστή. Οι νέοι διαχειριστές εντοπίζονται αυτόματα όταν προσθέτετε στον κατάλογο μια κλάση με το χαρακτηριστικό.
Συνδυασμός με χειροκίνητη καταχώριση
Οι διαχειριστές που εντοπίζονται αυτόματα και όσοι καταχωρίζονται χειροκίνητα συνυπάρχουν στο ίδιο μητρώο. Μπορείτε να χρησιμοποιήσετε και τις δύο προσεγγίσεις στο ίδιο έργο:
// Auto-discover the bulk of handlers
Queuety::discover_handlers( __DIR__ . '/handlers', 'MyPlugin\\Handlers' );
// Manually register a handler without the attribute
Queuety::register( 'legacy_handler', LegacyHandler::class );