Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Generate files concurrently #54

Merged
merged 5 commits into from
Apr 28, 2021
Merged

Generate files concurrently #54

merged 5 commits into from
Apr 28, 2021

Conversation

jasonvarga
Copy link
Member

@jasonvarga jasonvarga commented Apr 27, 2021

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
Member Author

Ah spatie/fork requires php8. 🤔

@duncanmcclean
Copy link
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
Member Author

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

@jasonvarga
Copy link
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