algolia / algoliasearch-client-php

⚡️ A fully-featured and blazing-fast PHP API client to interact with Algolia.
https://www.algolia.com/doc/api-client/php/getting-started/
MIT License
671 stars 116 forks source link

Using non-blocking sleep method #712

Closed alexander-schranz closed 1 year ago

alexander-schranz commented 1 year ago

Description

I'm currently implementing an abstraction around search engines and was thinking about calling $task->wait(); in a async react-php method. But as the wait is using sleep / usleep it is blocking method. Maybe it would make sense to move to a non-blocking method or look if example a non block variant like \React\Promise\Timer\sleep(1.0) exist use that when install else fallback to usleep/sleep.

I'm not an expert with async and didn't yet test out the things more. So it could also be that this totally does not make any sense as other core things are already blocking. Just stumble over it and thought it is maybe worth to great an issue for it.

Reference from ReactPHP Async doc that sleep is blocking: https://github.com/reactphp/async#async

DevinCodes commented 1 year ago

Hi @alexander-schranz !

Thank you for proposing this. The wait / waitTask method is synchronous by design, as it's meant to be blocking code execution until a task in Algolia has finalized. For a version compatible with react-php, I'd recommend implementing a custom method in your code that follows the same logic as the waitTask method, but with the sleep replaced with the variant you suggested.

I hope this helps, let me know if you have any question. I'm closing the issue for now, but if there's a lot of demand for this feature we may want to reconsider it.