Comments (3)
- Database entry is the best solution for this case. I usually use redis for such purposes, but it can be mysql or any other db.
- Yes, this is normal behavior for php script, but you can try to use pm2 with
watch
mode enabled
from yii2-command-bus.
regarding 1. and how can i access the result or attributes of the job?
I tried to access the job object in e.g. QueueBusController::onSuccess but the attributes of the unserialized Job object are always the default ones e.g. null and don't have the values which are set when the job is executed.
The $result in QueueBusController::onSuccess is of course the return value of my command and could be stored in the database.
But attributes which are changed during the execution of the command are still not changed.
For me it looks like that the CommandBus or QueuedCommandMiddleware don't use the job object by reference so that the attributes aren't changed.
Can you give an example on how do you log the process changes on different events.
What I tried is the following
'queue-bus' => [
'class' => 'trntv\bus\console\QueueBusController',
'on '. trntv\bus\console\QueueBusController::EVENT_BEFORE_HANDLE => ['handlerClass', 'handleBeforeHandle'],
'on '. trntv\bus\console\QueueBusController::EVENT_AFTER_HANDLE => ['handlerClass', 'handleAfterHandle'],
],
with a function like below
class handlerClass{
....
public static function handleAfterHandle(QueueBusEvent $event)
{
$id = ArrayHelper::getValue($event, 'job.id');
Console::output("event after Handle ID#{$id}");
$job = ArrayHelper::getValue($event, 'job');
if (array_key_exists('serializer', $job['body'])) {
$unserialize = $job['body']['serializer'][1];
$command = call_user_func($unserialize, $job['body']['object']);
var_dump($command);
var_dump($command->failure); // null and not the changed value
var_dump($command->success); // null and not the changed value
}
}
....
}
and failure, success are attributes in my Command which I change on execution.
And as i have written if i add similar code to QueueBusController::onSuccess the attributes are also null and aren't the changed values.
from yii2-command-bus.
There is no command object in onSuccess or onError handlers there is job array. Job is something coming from queue.
If you want to log something from command you should log it inside command execution or you can use middlewares. They have access directly to Command
object.
I think i should create something like LoggingMiddleware
for example.
from yii2-command-bus.
Related Issues (20)
- Потеря данных в фоновых процессах. HOT 17
- Problem with LoggingMiddleware in combination with QueuedCommandMiddleware HOT 2
- Still issues with logging and loop on exceptions
- Background commands not work for this case HOT 3
- details description of background process
- Issue with PHP_BINARY HOT 5
- waiting for multiple Background Commands running in parallel
- Использование другой очереди заданий HOT 4
- php7.2 support HOT 1
- Object can not be specific class name HOT 8
- BackgroundCommandMiddleware proc_open Error
- PHP 7.2 Cannot use yii\base\Object as Object because 'Object' is a special class name
- Error: Argument 1 passed to trntv\bus\locators\ClassNameLocator::addHandler() must be an instance of trntv\bus\interfaces\Handler, string given
- extract queue and background functionality to middlewares
- More tests
- don't sleep if there are jobs in queue in QueueBusController.php HOT 1
- can you give a selfhandled redis queue command example? HOT 4
- DelayedCommand feature request HOT 2
- LoggingMiddleware
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yii2-command-bus.