1. Go to this page and download the library: Download crazy-goat/workerman-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use CrazyGoat\WorkermanBundle\Utils;
// Reload only the current worker process
Utils::reload();
// Reload all worker processes
Utils::reload(reloadAllWorkers: true);
use CrazyGoat\WorkermanBundle\Reboot\Strategy\RebootStrategyInterface;
use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag;
#[AutoconfigureTag('workerman.reboot_strategy')]
final class TestRebootStrategy implements RebootStrategyInterface
{
public function shouldReboot(): bool
{
return true;
}
}
use CrazyGoat\WorkermanBundle\Http\Request;
use CrazyGoat\WorkermanBundle\Middleware\MiddlewareInterface;
use Workerman\Protocols\Http\Response;
final readonly class MyMiddleware implements MiddlewareInterface
{
public function __invoke(Request $request, callable $next): Response
{
// Pre-processing: inspect or modify the request
if ($request->header('X-Custom') === null) {
return new Response(400);
}
$response = $next($request);
// Post-processing: inspect or modify the response
$response->header('X-Processed-By', 'MyMiddleware');
return $response;
}
}
use CrazyGoat\WorkermanBundle\Attribute\AsTask;
/**
* Attribute parameters
* name: Task name
* schedule: Task schedule in any format
* method: method to call, __invoke by default
* jitter: Maximum jitter in seconds that adds a random time offset to the schedule. Use to prevent multiple tasks from running at the same time
*/
#[AsTask(name: 'My scheduled task', schedule: '1 minute')]
final class TaskService
{
public function __invoke()
{
// ...
}
}
use CrazyGoat\WorkermanBundle\Attribute\AsProcess;
/**
* Attribute parameters
* name: Process name
* processes: number of processes
* method: method to call, __invoke by default
*/
#[AsProcess(name: 'My worker', processes: 1)]
final class ProcessService
{
public function __invoke()
{
// ...
}
}