#!/usr/bin/env php ')) { fwrite( STDERR, sprintf( 'FuzeWorks Async requires PHP 7.3 or higher.' . PHP_EOL . 'You are using PHP %s (%s).' . PHP_EOL, PHP_VERSION, PHP_BINARY ) ); die(1); } // First load composer $autoloaders = [ __DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php' ]; foreach ($autoloaders as $file) if (file_exists($file)) require_once($file); // If a bootstrap is provided, use that one $arguments = getopt('', ['bootstrap:']); if (!isset($arguments['bootstrap']) || empty($arguments['bootstrap'])) { fwrite(STDERR, "Could not load worker. No bootstrap provided."); die(1); } // Load the file. If it doesn't exist, fail. $file = $arguments['bootstrap']; if (!file_exists($file)) { fwrite(STDERR, "Could not load worker. Provided bootstrap doesn't exist."); die(1); } // Load the bootstrap /** @var Factory $container */ $container = require($file); // Check if container is a Factory if (!$container instanceof Factory) { fwrite(STDERR, "Could not load worker. Provided bootstrap is not a valid bootstrap."); die(1); } // Check if the Async library is already loaded. If not, load it. // @todo: Better check in libraries for existing library try { /** @var Tasks $lib */ $lib = $container->libraries->get('async'); } catch (LibraryException $e) { $container->libraries->addLibraryClass('async', '\FuzeWorks\Async\Tasks'); /** @var Tasks $lib */ $lib = $container->libraries->get('async'); } // Fetch arguments for the worker $arguments = getopt("t:p::"); if (!isset($arguments['t'])) { fwrite(STDERR, "Could not load worker. No taskID provided."); die(1); } // Prepare arguments $taskID = base64_decode($arguments['t']); $post = isset($arguments['p']); // RUN THE APP $worker = $lib->getWorker(); $worker->runTaskById($taskID, $post); fwrite(STDOUT,'Finished task \'' . $taskID . "'"); ?>