Skip to content

Generate files concurrently#54

Merged
jasonvarga merged 5 commits into
masterfrom
async
Apr 28, 2021
Merged

Generate files concurrently#54
jasonvarga merged 5 commits into
masterfrom
async

Conversation

@jasonvarga

@jasonvarga jasonvarga commented Apr 27, 2021

Copy link
Copy Markdown
Member

This PR uses Spatie's fork package to split the content file generation into as many chunks as you request. Each chunk will run at the same time.

You must have spatie/fork installed, which requires PHP 8.

composer require spatie/fork

You can specify how many "workers" should be used with an option.

php please ssg:generate --workers=4

Each worker will spawn a separate PHP process, so you should only use as many workers as you have CPU cores.

The console output has been adjusted a little to cope with the concurrency. Rather than output each line, you get a single line that is constantly updating, and you will see all the errors right at the end.

image

If you don't have spatie/fork installed, it'll tell you:

image

If you use --workers=1 (for some reason) or don't specify the option at all, it'll happily just chug along without concurrency.

Fixes #16

@jasonvarga

Copy link
Copy Markdown
Member Author

Ah spatie/fork requires php8. 🤔

@duncanmcclean

Copy link
Copy Markdown
Member

Maybe it could just check if fork is installed (might need to be done separately) and if you're running PHP 8 when someone provides the additional param.

Although, I'm not sure if that would work....

@jasonvarga

Copy link
Copy Markdown
Member Author

Yeah either we just bump the PHP requirement of ssg to 8, or do that.

@jasonvarga

Copy link
Copy Markdown
Member Author

Okay I've made it so that you can only use concurrency if you manually install spatie/fork.

@jasonvarga jasonvarga merged commit b696dc7 into master Apr 28, 2021
@jasonvarga jasonvarga mentioned this pull request Apr 28, 2021
@jasonvarga jasonvarga deleted the async branch April 28, 2021 19:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Built time is very long - + 15 minutes.

2 participants