1. Go to this page and download the library: Download spatie/fork 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/ */
spatie / fork example snippets
use Spatie\Fork\Fork;
$results = Fork::new()
->run(
fn () => (new Api)->fetchData(userId: 1),
fn () => (new Api)->fetchData(userId: 2),
fn () => (new Api)->fetchData(userId: 3),
);
$results[0]; // fetched data of user 1
$results[1]; // fetched data of user 2
$results[2]; // fetched data of user 3
use Spatie\Fork\Fork;
$results = Fork::new()
->run(
function () {
sleep(1);
return 'result from task 1';
},
function () {
sleep(1);
return 'result from task 2';
},
function () {
sleep(1);
return 'result from task 3';
},
);
// this code will be reached this point after 1 second
$results[0]; // contains 'result from task 1'
$results[1]; // contains 'result from task 2'
$results[2]; // contains 'result from task 3'
use App\Models\User;
use Illuminate\Support\Facades\DB;
use Spatie\Fork\Fork;
Fork::new()
->before(fn () => DB::connection('mysql')->reconnect())
->run(
fn () => User::find(1)->someLongRunningFunction(),
fn () => User::find(2)->someLongRunningFunction(),
);
use App\Models\User;
use Illuminate\Support\Facades\DB;
use Spatie\Fork\Fork;
Fork::new()
->before(
parent: fn() => echo 'this runs in the parent task'
)
->run(
fn () => User::find(1)->someLongRunningFunction(),
fn () => User::find(2)->someLongRunningFunction(),
);
use Spatie\Fork\Fork;
Fork::new()
->before(
child: fn() => echo 'this runs in the child task',
parent: fn() => echo 'this runs in the parent task',
)
->run(
fn () => User::find(1)->someLongRunningFunction(),
fn () => User::find(2)->someLongRunningFunction(),
);
$results = Fork::new()
->run(
fn () => (new Api)->fetchData(userId: 1),
fn () => (new Api)->fetchData(userId: 2),
fn () => (new Api)->fetchData(userId: 3),
);